[php]
<html>
<head>
<title>正則表達式和樣式匹配</title>
</head>
<body>
<?php
$find="love";//定義要查找的變量
$result=preg_match("/$find/","I love you,xiaohei!");//第一個參數為要查找
//變量,第二個參數為查找字符串
//查找 前後帶空格的"you",返回false
@$result1=preg_match("\byou\b/","I love you,xiaohei!");
if ($result){
echo "匹配成功!<br>";
}else {
echo "匹配失敗!<br>";
}
if ($result1){
echo "\byou\b/"."匹配成功!<br>";
}else {
echo "\byou\b/"."匹配失敗!<br>";
}
?>
<?php
/* ^元字符被稱為行首端位。。匹配字符串起始找到的樣式。
* 判斷獲獎名單("李興樂 王長超 小黑")中是否有王長超,在判斷,王長超,李興樂是否為第一個
* */
$string="李興樂 王長超 小黑";
$name1="王長超";
$name2="李興樂";
if (ereg("王長超",$string)){//判斷是否 有王長超
echo "有王長超!<br>";
}
if(ereg("^李興樂",$string)){//判斷行首是否為李興樂
echo '李興樂為第一個<br>';
}
if(ereg("^王長超",$string)){
echo "王長超為第一個<br>";
}
if(ereg("小黑$",$string)){ //判斷行尾 是否為 小黑
echo "小黑為最後一個<br>";
}
?>
<?php
//郵箱格式判斷
//元字符+ 用來匹配前面的子表達式 一次或多次..{2}表示匹配的次數喂兩次。{2,4}重復 2-4次
$myemail="[email protected]";
if (ereg("([0-9a-zA-Z]+)([@])([0-9a-zA-Z]+)([.])([0-9a-zA-Z]{2,4})",$myemail)){
echo $myemail."格式正確<br>";
}else {
echo $myemail."格式不正確,請重新輸入!<br>";
}
?>
<?php
//匹配字符格式
//判斷日期格式是否為 YYYY-MM-DD格式
$mydate="2012-11-26";
if (ereg("([0-9]{4})(-)([0-9]{2})(-)([0-9]{2})",$mydate,$regs)){
echo $regs[1]."年$regs[3]月$regs[5]日<br>";
}else {
echo "時間格式錯誤!<br>";
}
?>
<?php
/*PHP支持Perl樣式的正則表達式,
* 樣式匹配函數:
* int preg_match(string $pattern,string $subject[,array $matches[,int flages]]);
* int preg_match_all(string $pattern,string $subject[,array $matches[,int flages]]);
* preg_match()和preg_match_all()用法相似,但後者是匹配整個字符串,而不是執照第一個,並且返回找到的樣式數量
*
* */
$string ="I am studing PHP,PHP is so easy.PHP";
$result=preg_match_all("/PHP/i",$string,$matches,PREG_OFFSET_CAPTURE);
if ($result==true){
echo "$result PHP was found.<br>";
print_r($matches);
echo "<br>";
}else {
echo "PHP was not found.<br>";
print_r($matches);
echo "<br>";
}
?>
</body>
</html>