preg_replace无法正常工作:(

时间:2010-11-23 01:20:18

标签: php preg-replace

好的,我有这个PHP脚本:

<?php

$stringz = "Dan likes to eat pears and his favorite color is green!";
$patterns = array("/pears/","/green/");
$string = preg_replace($patterns, '<b>\\1</b>', $stringz);
echo "<textarea rows='30' cols='100'>$string</textarea>";

?>

当我运行它时,我得到了这个: Dan likes to eat <b></b> and his favorite color is <b></b>!

假设其中有一个单词...但它没有......

3 个答案:

答案 0 :(得分:4)

那是因为你没有明确捕捉任何东西。当然,\\0会捕获整个匹配项,但为了捕获特定部分,如果要使用\\1\\2\\3,则需要使用捕获组,等。将$patterns更改为:

 $patterns = array("/(pears)/","/(green)/");

()表示捕获组,并且在其中捕获的任何值都存储在引用\\n中,其中\\n引用1索引n捕获组。

答案 1 :(得分:3)

更改\\1的{​​{1}}。

答案 2 :(得分:0)

怎么样

$patterns = array("/(pears)/","/(green)/");

\\1适用于主题,即括号中的任何内容。