1

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

我的代码:

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

我想要像 '$1'.'00' 之类的东西来替换输出应该是:

Lipsum00(没有任何空格)

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

有什么建议吗?

4

2 回答 2

4

尝试:

$returnValue = preg_replace('/de(.*)y/i', '\${1}00', 'delipsumy', -1, $count);
于 2013-04-05T23:22:17.573 回答
1

这在方法的文档中得到解决 (强调添加)

当使用一个反向引用后跟另一个数字的替换模式时(即:在匹配的模式之后立即放置一个文字数字),您不能使用熟悉的 \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

于 2013-04-05T23:25:20.753 回答