preg_match und Position des Gefundenen
romy
- php
Hi,
Versuche mich gerade an einer Linkersetzung. Habe auch eine schöne Variante, die aber nur super läuft, wenn es nur einen Link gibt, da ich den gefundenen Link sofort wieder ersetze, findet preg_match ihn natürlich nochmal. Wie könnte ich dies umgehen. Vielleicht wäre es günstig nach dem Ersetzen weiterzugehen, so dass der schon ersetzte Teil nicht nochmal überprüft wird, oder eine ähnliche Variante. Stehe da gerade etwas auf dem Schlauch? Was kann man da tun?
ciao
romy
Hallo.
Wie suchst und ersetzt Du denn zur Zeit. preg_replace() sollte eigentlich für genau Deine Aufgabe gemacht sein.
Grüße aus Würzburg
Julian
Hi,
Wie suchst und ersetzt Du denn zur Zeit. preg_replace() sollte eigentlich für genau Deine Aufgabe gemacht sein.
solange der suchausdruck gefunden wird
ersetze ihn
das Problem ist, dass ich links suche (zB.) und diese verändere in der Art: <a href=bla.htm">bla</a> wird zu <a href="blabla.htm?bla=bla"
bla</a>
d.h. es ist immer noch ein a-tag da und dieses wird wieder gefunden, wenn der String aufs Neue durchsucht wird. Somit ensteht eine endlos-Schleife.
Lösung1: ich schneide den String ab, sobald ich was gefunden habe, damit es nicht noch mal gefunden werden kann, aber ich kenne ja die genaue Position des Gefundenen nicht, da preg_match nur 0 oder 1 zurückgibt.
Lösung2: irgendeine geeignete Abbruchbedingung, aber mir fällt nichts passendes ein
Weisst Du was?
danke
ciao
romy
Hi,
Dein Problem ist lösbar. Guckst Du hier:
http://www.php.net/manual/de/function.preg-replace.php
http://www.php.net/manual/de/function.preg-replace-callback.php
Vielleicht hilft's Dir auf die Sprünge.
Gruß,
Danny
Hi,
http://www.php.net/manual/de/function.preg-replace-callback.php
das ist genau was ich suche!
Danke, super
ciao
romy