preg_replace在$ 1之后添加“00”,在替换中没有空格

时间:2013-04-05 23:17:49

标签: php replace preg-replace

我试图在$ 1之后添加“00”,在preg_replace替换中没有空格。

我的代码:

$count = null;
$returnValue = preg_replace('/de(.*)y/i', '$1 00', 'delipsumy', -1, $count);

我希望有一个像'$ 1'。'00'这样的替换,输出应该是:

  lipsum00(没有任何空格)

我已经尝试过类似'$ 1'。'00'和'$ 100'但不起作用

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

尝试:

$returnValue = preg_replace('/de(.*)y/i', '\${1}00', 'delipsumy', -1, $count);

答案 1 :(得分:1)

method's documentation (强调添加)

解决了这个问题
  

当使用替换模式时,后向引号后面会紧跟另一个数字(即:在匹配的模式后立即放置一个文字数字),您不能使用熟悉的\ 1表示法进行反向引用。 \ 11,例如,会混淆preg_replace(),因为它不知道你是否希望\ 1反向引用后跟文字1,或者\ 11反向引用后跟什么都没有。 在这种情况下,解决方案是使用\ $ {1} 1 。这会创建一个隔离的$ 1反向引用,将1保留为文字。

所以你的替换模式是'\${1}00'。举个例子:

// Output: H__e__ll__o__ W__o__rld
echo preg_replace("/([aeiou])/", "__\${1}__", "Hello World");

查看实际操作:http://codepad.org/orbK5jdw