Tom: Regular Expressions, leider noch 'ne Runde

Beitrag lesen

Hello Christian,

so ganz ist das leider noch nicht ausgestanden. Ich habe jetzt eine Lösung, die funktioniert für alle meine Testfälle, aber leider widerspricht sie nach meinem Verständnis den Regeln für Lookahead-Assertions

$pattern= '#<(a|area)\s*.*(?!href=.?javascript:|href=.?mailto:)href=("|'|)?(\S+)\2\s*([^>]*)>(.+)</\1>#i';

findet alle Referenzen in <a> und <area>, egal ob in der Schreibweise mit einfachen, doppelten oder ohne Häkchen umd die URi und unterdrückt in diesem Beispiel 'mailto:' und 'javascript:'

Ich habe bestimmt 30 verschiedene Lösungen durch, die alle nicht funktioniert haben.
Auch Deine Lösung arbeitet leider nicht mit der Variante 'keine Häkchen um die URi' zusammen.

Es sind also nun mMn zwei Schmuddelstellen drin

1.)   ("|'|)?
  2.)   und die variable Länge der Assertion...

aber so geht es.
Ich habe ca. ein Dutztend valide und nicht valide Seiten im Netz ausgetestet damit.

Zufrieden bin ich aber nicht damit.

Testseiten lade ich noch auf den Server, falls erforderlich.

Harzliche Grüße vom Berg und Frohe Weihnachtszeit

Tom

--
Nur selber lernen macht schlau