dedlfix: preg_replace mit urlencode

Beitrag lesen

Hi!

habe für meine auto-replace funktion folgende Ersetzungsregel erstellt:

$search_for[] = '/href="(.*)"/iU';

$replace_with[] = 'href="'.urlencode(.'"\1"'.).'"';

  
Das kann so nicht gehen, da urlencode() sofort aufgerufen würde und dessen Ergebnis in $replace\_with[] landete, wenn du es ohne Syntax-Fehler schreiben könntest. Du willst hingegen, dass das urlencode erst später auf den ermittelten Wert angewendet wird. Dann musst du es auch erst später ausführen lassen. Die beste Methode dafür ist [preg_replace_callback()](http://de.php.net/manual/en/function.preg-replace-callback.php). Eine andere ist der [Modifizierer](http://de.php.net/manual/en/reference.pcre.pattern.modifiers.php) e, jedoch solltest du dazu das Handbuch lesen und darauf achten, dass dadurch kein ungewollter Code ausgeführt wird.  
  
Obendrein ist die Schreibweise \\n seit Version 4.0.4 nicht mehr die bevorzugte, sondern $n.  
  
  
Lo!