Gerd: Danke!

Beitrag lesen

Danke an Dich.
Hat prima geklappt, ich hab PREG_OFFSET_CAPTURE und substr_replace()  genutzt. Jetzt läufts!
Danke für die Antwort, gerade deshalb, weil der Thread ja schon etwas älter war und ich drauf und dran war, per Doppelposting nochmal auf mein nach wie vor bestehendes Problem hinzuweisen ;-)

Grüße, Gerd

Hallo (und frohe Ostern),
substr_replace() weiter.

ich glaub nicht. Denn ich muß ja noch jede Menge Zwischenoperationen (if-abfragen, explode, substr, usw.) mit den Links anstellen. Die wäre ich mit preg-replace gezwungen, in einem Schritt zu machen.

Wenn du preg_match_all() benutzt, kannst du als Flag PREG_OFFSET_CAPTURE angeben. Dann wird das "Treffer"-Array zusätzlich um die Startposition der gefundenen Zeichenketten erweitert. Diese Information hilft dir dann beim Ersetzen mit substr_replace() weiter.

Aber auch mit preg_replace() (oder zumindest "nahen Verwandten) ist es möglich, umfangreicheren PHP-Code in die Verarbeitung einzubinden. Es gibt dazu zwei Möglichkeiten:

  1. Du erweiterst dein Suchmuster um den Modifikator "/e". Dann kannst du den "Ersetzen"-Parameter (ähnlich wie bei eval()) mit PHP-Code erweitern.

  2. Umfangreichere Manipulationen an den gefundenen Zeichenketten ermöglicht eine benutzerdefinierte Funktion, wenn du statt preg_replace() die Funktion preg_replace_callback() verwendest.

MffG
EisFuX