srob: back references bei verschachtelten preg_replace (e-modifier)

Beitrag lesen

Hi molily,

$string=preg_replace('~murks~e', 'preg_replace("~m(urks)~", "p\\1", "\0")', 'textmurkstext');

Zuerst wird der Text murks aus dem String textmurkstext extrahiert, um an ihm eine weitere Ersetzung vorzunehmen: der erste Buchstabe wird durch p ausgetauscht. Der Inhalt von $string sollte sein:

textpurkstext

wenn ich das Problem richtig verstanden habe, könnte es so gehen:

$string = preg_replace('/murks/e','"p".substr($0,1)','textmurkstext');

Vermutlich wird substr() gegenüber einem weiteren regulären Ausdruck auch die Performance fördern...

HTH Robert

[Wohl wissend, daß Einmischungen in die Angelegenheiten des Inner Circles nicht gerne gesehen werden...]