文章教程

15.4.5执行正则表达式的搜索和替换的函数

9/17/2020 9:26:54 PM 人评论 次浏览

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所示。

图 15-13 在程序中使用函数preg_replace()做替换

教程类别