12.02.2008, 23:17
Hallo zusammen,
Ich hab ein verzwicktes Problem mit der Funktion preg_replace. Ich hab ein Such- und ein Ersetzarray geschrieben, anhand derer ich bestimmte "Forencodes" mit html-Code ersetzen möchte. Ich hab ein vereinfachtes Beispiel heraus geschrieben.
Nach längeren Herumprobieren, bin ich darauf gekommen, dass die Buchstaben r, l und u nicht an irgendeiner Stelle stehen dürfen, an der jetzt Linkr steht, da sonst der komplette String ohne Ersetzung ausgegeben wird. Wenn die Buchstaben innerhalb der ersten eckigen Klammern auftaucht, scheint dies nichts auszumachen.
Da ich den Benutzern nun aber nicht vorschreiben kann die Buchstaben im Linknamen nicht zu benutzen, such ich nach einer Lösung, wie ich das Problem umgehen oder entfernen könnte.
Hier noch ein Codebeispiel:
Ausgabe ist (ohne die Leerzeichen nach '[':
Ohne das r, also nur mit Link funktioniert es problemlos...
Hoffe ich hab nur irgendwas im Suchmuster übersehen, aber ich komm einfach nicht drauf.
Ich hab ein verzwicktes Problem mit der Funktion preg_replace. Ich hab ein Such- und ein Ersetzarray geschrieben, anhand derer ich bestimmte "Forencodes" mit html-Code ersetzen möchte. Ich hab ein vereinfachtes Beispiel heraus geschrieben.
Nach längeren Herumprobieren, bin ich darauf gekommen, dass die Buchstaben r, l und u nicht an irgendeiner Stelle stehen dürfen, an der jetzt Linkr steht, da sonst der komplette String ohne Ersetzung ausgegeben wird. Wenn die Buchstaben innerhalb der ersten eckigen Klammern auftaucht, scheint dies nichts auszumachen.
Da ich den Benutzern nun aber nicht vorschreiben kann die Buchstaben im Linknamen nicht zu benutzen, such ich nach einer Lösung, wie ich das Problem umgehen oder entfernen könnte.
Hier noch ein Codebeispiel:
PHP-Code:
$string = "Dies [url=http://www.istreinBeispiel.de]Linkr[/url]";
$search = array ("/\[url=([^\]]*)\]([^\[\/url\]]*)\[\/url\]/");
$replace = array ("<a href=\"http://\\1\">\\2</a>");
$ergebnis = preg_replace($search,$replace,$string);
Ausgabe ist (ohne die Leerzeichen nach '[':
Code:
Dies [ url=http://www.istreinBeispiel.de]Linkr\[ /url]
Ohne das r, also nur mit Link funktioniert es problemlos...
Hoffe ich hab nur irgendwas im Suchmuster übersehen, aber ich komm einfach nicht drauf.