PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   kniffliges preg_replace pattern (http://www.selfphp.de/forum/showthread.php?t=26138)

ZENeca 23.10.2018 21:45:45

kniffliges preg_replace pattern
 
Hallo ihr lieben Leute,

ich soll ein mir fremdes PHP-Script php 7.2 fit machen und an einer Stelle komme ich da an meine Grenzen,
dort soll mit einem preg_replace in ein html-string die
<a href=... Fragmente modifiziert werden.
also, so wie ich es verstanden habe soll aus:
....html-code... <a href="http://www.xyz.de?a=1..."> text ...weiterer html code

(im Prinzip) ein:
....html-code... <a href="./click.php?url=http://www.xyz.de?a=1..."> text ...weiterer html code
werden

der dafür vorgesehene Ausdruck sieht wie folgt aus
Code:

        $new = preg_replace(',<a([^>]+)href="([^>"\s]+)",ie',
'"<a\1href=\"/click.php?campaignid=$campaignId&url=" . urlencode("\2")  . "\""',
        $htmlIn);

wobei <a href ...> auch mehrfach im String vorkommen kann.

Das man das Pattern in ein /pattern/ einfassen muß ist mir klar,
das hat auch bei allen anderen regulären Ausdrücken gereicht
aber bei diesem reicht das nicht, er bleibt zwar an der Stelle dann nicht mehr hängen
aber modifiziert den String nicht
Ich versucht das Kommando zu analysieren finde keine Infos über die Kommatas bei
',<a([^>]+)href="([^>"\s]+)",ie'
die habe ich in einem regulärem Ausdruck noch nie gesehen (bzw. nur in kombi mit Zeilen-
oder Spaltenzahlen aber dann in geschweiften Klammern) und was soll das ie?
was das \2 im urlencode soll verstehe ich auch nicht.

Ich habe da echt keine Ideen mehr und finde auch nichts im Netz
Kann irgend jemand die mir unverständlichen Teile erklären oder hat jemand eine andere Lösung für die gleiche Aufgabenstellung?
wäre klasse, wenn mir da jemand weiterhelfen könnte

Besten Dank im Voraus

Zen


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:11:09 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.