Как использовать обратные ссылки на PCRE в PHP?
Вопрос
Я прочитал это Страница PHP RegEx, но либо я что-то упускаю, что-то неправильно читаю, либо это работает не так, как говорят.Я предполагаю, что это один из первых двух.
$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;"
Не связан с StackOverflow