15.4.3 进行正则表达式匹配的函数
PERL兼容的正则表达式函数preg_match(),用来完成对正则表达式的匹配。该函数的语法如下所示。
int preg_match(string$pattern,string$subject[,array$matches[,int$flag]])
该函数在参数字符串subject中搜索与参数$pattern给出的正则表达式相匹配的内容。该函数的第3个参数是可选参数,该参数是一个数组,如果提供了第3个参数$matches,则其会被搜索的结果所填充。$matches[0]包含与整个模式匹配的文本,$matches[1]将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。函数perg_match()还有第4个参数,也是可选的,对这个参数,这里不再详细叙述。
函数perg_match()返回对$pattern的匹配次数,该返回值要么是0次(没有匹配)或1次,因为函数preg_match()在第一次匹配之后将停止继续匹配。如果出错,函数preg_match()返回FALSE。代码15-9演示了该函数的用法。
代码15-9 使用PERL兼容正则表达式函数preg_match()进行正则表达式匹配15-9.php
01 <?php
02 $str_arr=array(
03 "PHP是优秀的Web脚本语言",
04 "Perl的文本处理功能很强大"
05 );//定义字符串数组
06
07 foreach($str_arr as$str)
08 {
09 //模式界定符后面的修正符"i"表示匹配时不区分大小写字母
10 if(preg_match("/php/i",$str))
11 {
12 echo"在字符串'$str'中找到对'php'的匹配";
13 echo"<br/>";
14 echo"<br/>";
15 }
16 else
17 {
18 echo"在字符串'$str'中<b>未</b>找到对'php'的匹配";
19 echo"<br/>";
20 echo"<br/>";
21 }
22 }
23 ?>
【代码解析】在这段代码中,通过函数preg_match()使用正则表达式/php/i,在两个给定的字符串中匹配字符串php。因为该模式是传给PERL兼容的正则表达式函数的参数,所以模式前后加上了//,称为/php/i。读者可能已经注意到,这里的模式最后加了一个字符i,这个字符就是15.4.1小节介绍的修正符,它的作用是匹配时不区分大小写字母。这段代码的执行结果如图15-10所示。