我试图在$ 1之后添加“00”,在preg_replace替换中没有空格。
我的代码:
$count = null;
$returnValue = preg_replace('/de(.*)y/i', '$1 00', 'delipsumy', -1, $count);
我希望有一个像'$ 1'。'00'这样的替换,输出应该是:
lipsum00(没有任何空格)
我已经尝试过类似'$ 1'。'00'和'$ 100'但不起作用
有什么建议吗?
答案 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