QUOTE (Ivo Gasser @ So 22.1.2006, 17:29)@Sascha
Das klingt ziemlich kompliziert. Da muss ich wohl noch ein wenig hirnen bis ich das wirklich verstanden habe. Dies liesse sich doch bestimmt auch in einfachere Worte packen.
[...]
Vielleicht hilft dieses Beispiel etwas weiter:
CODE <?php
preg_replace("/(<\/?)(\w+)([^>]*>)/e",
"'\\1'.strtoupper('\\2').'\\3'",
$html_body);
?>
Hierbei wird im Grunde nur die Ersetzung durch den PHP-Parser geschickt, so dass die Funktion strtoupper() benutzt werden kann, was ohne den Modifikator /e nicht möglich wäre. Wichtig hierbei ist darauf zu achten, dass die einzelnen Subpattern im Ersetzungsstring auch escaped werden (statt \1 wird hier \\1).
Dies ist im Grunde eigentlich Sinnlos für Deinen Pattern, da Du ja einfach gar nichts einfügst.
Bei der Variable $allow solltest Du vielleicht den Pattern noch etwas modifizieren, denn wenn in der Variable nicht escape Zeichen stehen, könnte es zu Problemen kommen, bzw. zu unerwünschten Ergebnissen. [1] Ob der Inhalt der Variable escaped werden sollte, hängt ganz davon ab, wie Du diesen Ausdruck verwenden möchtest.
MfG Sascha Ahlers
[1] string
preg_quote ( string str [, string delimiter] )