EisFuX: Noch eine Frage

Beitrag lesen

Hallo (und frohe Ostern),

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

--
... Suchmaschinen-Blog ...