PHP 5.5 preg_replace() /e modifier deprecated
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
benutzen
beseitigen
code
dank
dokumentation
endeffekt
http
jemand
korrektur
meldung
parameter
passen
prinzip
produktion
string
treffer
umstellung
url
verwenden
zeile
-
Ich bin gerade dabei eine Website (nicht bei Lima) zur Umstellung auf PHP 5.5 vorzubereiten. Das dort installierte CMS (wird vom Autor nur sporadisch aktualisiert) wirft mir die Meldung aus
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in...
Nun könnte ich diese Meldung in der Produktion einfach unterdrücken, aber ich würde den Missstand lieber grundsätzlich beseitigen.
http://php.net/manual/de/function.preg-replace.php beschreibt ja, dass ich an Stelle von preg_replace nun preg_replace_callback verwenden soll.
Leider stehe ich mit den regulären Ausdrücken immer etwas auf Kriegsfuss. Die genannte Codezeile ist
$string = preg_replace('/\[\[([^|\]]+?)(?:\|([^\]]+))?\]\]/e', "'<a href=\"\$1\">'.(('\$2')?'\$2':'\$1').'</a>'", $string);
Kann mir jemand helfen und sagen wie ich aus preg_replace preg_replace_callback mache?
Beitrag zuletzt geändert: 11.5.2015 12:05:55 von mein-wunschname -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
So wie ich die Dokumentation verstehe, müsste das dann z.B. so aussehen (ungetestet!)
$string = preg_replace_callback('/\[\[([^|\]]+?)(?:\|([^\]]+))?\]\]/', function ($treffer) { return "<a href=\"\{$treffer[1]}\">". ($treffer[2]?$treffer[2]:$treffer[1])."</a>"; }, $string);
Im Endeffekt ersetzt du den 2. Parameter einfach mit einer Funktion die dessen Aufgabe übernimmt. $treffer ist dabei ein array, das Du im Prinzip benutzen kannst wie davor $0, $1,...
Beitrag zuletzt geändert: 11.5.2015 14:02:49 von davidlw -
Fast, nur die geschweifte Klammer '{' innerhalb des Strings (Zeile 3) darf nicht escaped werden.
$string = preg_replace_callback('/\[\[([^|\]]+?)(?:\|([^\]]+))?\]\]/', function ($treffer) { return "<a href=\"{$treffer[1]}\">". ($treffer[2]?$treffer[2]:$treffer[1])."</a>"; }, $string);
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage