【发布时间】:2010-09-06 05:11:19
【问题描述】:
我读过这个PHP RegEx page,但要么我遗漏了一些东西,要么误读了一些东西,要么它不像他们所说的那样工作。我猜它是前两个之一。
$str = preg_replace("([|]\d*)", "\1;", $str);
【问题讨论】:
我读过这个PHP RegEx page,但要么我遗漏了一些东西,要么误读了一些东西,要么它不像他们所说的那样工作。我猜它是前两个之一。
$str = preg_replace("([|]\d*)", "\1;", $str);
【问题讨论】:
您的正则表达式应该遵循 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;"
【讨论】:
$n 反向引用语法优于 \\n。手册是这样说的。