15.4.5 执行正则表达式的搜索和替换的函数
函数preg_replace()可以完成对正则表达式的搜索和替换,该函数的语法如下所示。
mixed preg_replace(mixed$pattern,mixed$replacement,mixed$subject[,int$limit])
该函数在参数$subject中搜索参数$pattern模式的匹配项,并替换为参数$replacement所指定的值。该函数的第4个参数是可选的,如果指定了参数$limit,那么该函数仅替换limit个匹配,如果省略参数$limit或者其值为-1,则所有的匹配项都会被替换。
函数preg_replace()如果搜索到匹配项,则会返回被替换后的$subject,否则返回原来不变的参数$subject。函数preg_replace()的每个参数(除了参数$limit)都可以是一个数组。如果参数$pattern和$replacement都是数组,那么该函数将以其键名在数组中出现的顺序来进行处理。这不一定和索引的数字顺序相同。所以,如果使用索引来标识哪个pattern将被哪个replacement来替换,应该在调用preg_replace()之前用函数ksort()对数组进行排序。如代码15-11所演示。
代码15-11 使用正则表达式搜索和替换的函数preg_repalce()15-11.php
01 <?php
02 $string="The quick brown fox jumped over the lazy dog.";//定义字符串变量
03 echo"原字符串:<br/>";
04 echo$string;
05 echo"<br/><br/>";
06
07 $patterns[0]="/quick/";
08 $patterns[1]="/brown/";
09 $patterns[2]="/fox/";
10
11 $replacements[2]="bear";
12 $replacements[1]="black";
13 $replacements[0]="slow";
14
15 $str1=preg_replace($patterns,$replacements,$string);//替换字符串
16 echo"使用函数ksort()之前字符串替换为:<br/>";
17 echo$str1;
18 echo"<br/><br/>";
19
20 ksort($patterns);//排序
21 ksort($replacements);//排序
22
23 $str2=preg_replace($patterns,$replacements,$string);
24 echo"使用函数ksort()之前字符串替换为:<br/>";
25 echo$str2;
26 echo"<br/><br/>";
27 ?>
【代码解析】程序定义了两个数组$patterns和$replacements。第20~21行分别对这两个数组进行排序。程序输出的是排序前和排序后的替换结果,如图15-13所示。
共有条评论 网友评论