如何在 PHP 中使用对 PCRE 的反向引用?

How do you use back-references to PCREs in PHP?

提问人:Thomas Owens 提问时间:8/20/2008 最后编辑:Alan MooreThomas Owens 更新时间:3/14/2009 访问量:1394

问:

我读了这个 PHP 正则表达式页面,但要么我遗漏了一些东西,误读了一些东西,要么它没有按照他们说的方式工作。我猜这是前两个之一。

$str = preg_replace("([|]\d*)", "\1;", $str);
PHP 正则表达式

评论


答:

4赞 Vegard Larsen 8/20/2008 #1

你的正则表达式应该遵循Perl语法,这意味着它必须以相同的字符开头和结尾(有一些例外)。此外,反向引用应以双斜杠开头,以绕过 PHP 的双重转义。这应该有效(通过快速测试):

$str = "asdfasdf |123123 asdf iakds |302 asdf |11";
$str = preg_replace("/([|]\d*)/", "\\1;", $str);
echo $str; // prints "asdfasdf |123123; asdf iakds |302; asdf |11;"

评论

0赞 Geert 7/9/2009
请注意,backreference 语法优先于 。手册上说。$n\\n