Belirteçleri kaçarken preg_replace fonksiyonları iç içe

0 Cevap php

Ben belirli bir dize aramak için preg_replace de 'e' değiştirici kullanıyorum. Sonra başka bir preg_replace deyimini kullanarak bireysel maçlar için o dize içinde bakmak gerekir:

$str = "This is FOO.";
$str = preg_replace('/(foo)/ie', "x$1", $str);
echo $str;

This will generate: This is xFOO.
Now I need to nest. (I'm nesting because I need to match an unknown number of groups into separate tokens which is not possible with a single preg_replace statement as discussed elsewhere on this forum. I've obviously simplified this code to focus on my question).

$str = "This is FOO.";
$str = preg_replace('/(foo)/ie', "preg_replace('/(\w)/i','x$1','$1')", $str);
echo $str;

I need this to generate This is xFxOxO.
But instead it generates This is xFOOxFOOxFOO.

Php kod ikinci satırı değerlendirir, bu eşleşen dize ile hem 1 $ belirteçleri değiştirilen foo. Ben iç preg_replace ifadesi tarafından değerlendirilecek gerekiyordu çünkü ilk $ 1 belirteci görmezden gerekir. Bu dış preg_replace deyimi tarafından değerlendirilecek olmayacak şekilde nasıl ben ilk $ 1 belirteci kaçabilir?

0 Cevap