Я использую модификатор 'e' в preg_replace для поиска заданной строки. Затем мне нужно, чтобы он просматривал в этой строке отдельные совпадения, используя другой оператор 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?