【发布时间】:2010-08-31 21:38:02
【问题描述】:
我在 preg_replace 中使用 'e' 修饰符来搜索给定的字符串。然后我需要它使用另一个 preg_replace 语句在该字符串中查找单个匹配项:
$str = "This is FOO.";
$str = preg_replace('/(foo)/ie', "x$1", $str);
echo $str;
这将生成:This is xFOO.
现在我需要筑巢。 (我之所以嵌套是因为我需要将未知数量的组匹配到单独的标记中,这对于本论坛其他地方讨论的单个 preg_replace 语句是不可能的。我显然已经简化了这段代码以专注于我的问题)。
$str = "This is FOO.";
$str = preg_replace('/(foo)/ie', "preg_replace('/(\w)/i','x$1','$1')", $str);
echo $str;
我需要这个来生成This is xFxOxO.
但它会生成This is xFOOxFOOxFOO.
当 php 计算第二行代码时,它会将两个 $1 标记替换为匹配的字符串 foo。我需要它忽略第一个 $1 令牌,因为它应该由内部 preg_replace 语句评估。如何转义第一个 $1 令牌,使其不会被外部 preg_replace 语句评估?
【问题讨论】: