PHP preg_replace()函数的用法(附带实例)
preg_replace() 函数用于替换字符串,该函数执行正则表达式的搜索和替换,语法格式如下:
逆向引用是通过“\”转义的数字,该数字指出当前表达式应该在此匹配它已经查找到的序列。此时,逆向引用的数字 n 指定在当前正则表达式中,从左往右、第 n 个“()”内的子模式应当替换它在字符串中所匹配的文本。替换模式在一个逆向引用后紧接着一个数字时,最好不要使用“\\n”来表示逆向引用。
例如,preg_replace() 函数无法区分“\\11”是“\\1”的逆向引用后面紧跟着一个数字 1,还是表示“\\n”的逆向引用。解决方法是使用“\${1}1”,因为这会形成一个隔离的“$1”逆向引用,而另一个“1”只是单纯的字符。
【实例】替换字符串。

图 1 替换字符串
preg_replace() 函数也可以将查找到的字符串替换为指定字符串,语法格式如下:
【实例 2】将字符串替换为超链接。

图 2 将字符串替换为超链接
(mixed preg_replace(mixed pattern,mixed replacement,mixed subject[,int limit])其中,replacement 可以包含形如“\\n”或“$n”的逆向引用,优先使用后者,$n 的取值为 1~99。
逆向引用是通过“\”转义的数字,该数字指出当前表达式应该在此匹配它已经查找到的序列。此时,逆向引用的数字 n 指定在当前正则表达式中,从左往右、第 n 个“()”内的子模式应当替换它在字符串中所匹配的文本。替换模式在一个逆向引用后紧接着一个数字时,最好不要使用“\\n”来表示逆向引用。
例如,preg_replace() 函数无法区分“\\11”是“\\1”的逆向引用后面紧跟着一个数字 1,还是表示“\\n”的逆向引用。解决方法是使用“\${1}1”,因为这会形成一个隔离的“$1”逆向引用,而另一个“1”只是单纯的字符。
【实例】替换字符串。
<?php header("content-type:text/html;charset=utf-8"); $str="<h1>爱我中国!</h1>"; $str1="(h1) 爱我中国!(/h1)"; echo $str; echo $str1; echo "</br>"; echo preg_replace('/<(.*?)>/',"($1)",$str); ?>运行结果如下图所示:

图 1 替换字符串
preg_replace() 函数也可以将查找到的字符串替换为指定字符串,语法格式如下:
string preg_replace(string $pattern,string $replacement,string $string)其中,参数 $replacement 表示替换字符串时使用的字符,其功能是使用字符串 $replacement 替换字符串 $string 中与 $pattern 匹配的部分,并返回替换后的字符串。如果没有可供替换的匹配项则返回原字符串。
【实例 2】将字符串替换为超链接。
<?php $stra="hello world"; echo preg_replace("/[lro]/","y",$stra)."<br>"; //使用y替换l、r、o $resrc='<a href="world.php">hello</a>'; echo preg_replace("/hello/",$resrc,$stra); //使用一个超链接替换hello字符 ?>运行结果如下图所示:

图 2 将字符串替换为超链接