Как вы используете обратные ссылки на PCREs в PHP?

Я прочитал эту страницу PHP RegEx , но либо я что-то упускаю, что-то неправильно читаю , либо это не работает так, как они говорят. Я предполагаю, что это один из первых двух.

$str = preg_replace("([|]\d*)", "\1;", $str);
19.08.2008 19:11:32
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;"
4
19.08.2008 19:29:00
Обратите внимание, что $nсинтаксис обратных ссылок предпочтительнее, чем \\n. Так говорится в руководстве.
Geert 9.07.2009 08:38:39