Tom: Reguläre Ausdrücke - String ausschließen

Beitrag lesen

Hello,

Ich habe mir mit PHP ein kleines Script geschrieben, dass Links aus einem HTML-Dokument filtern kann. Mein Problem ist jetzt, dass ich alle Links ausschließen möchte, die nicht entweder in einem 'a' oder in einem 'area' stehen und außerdem die Anzeige von Links mit Javascript verhindern will, also <a href="javascript: * >. Wie muss ich dazu einen Code erweitern?

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

Sschau mal, ob das klappt soweit.
Ich habe gerade leider keine Seite, in der 'JavaScript' drinsteht im Link...

Das    (?<!   nennt sich negative lookbehind assertion

und wurd hier neulich nochmal ausführlich von Seth erklärt.
Es bedeutet, dass die erwähnte Behauptung (Assertion) NICHT vor dem Suchbegriff auftreten darf.
Sie ist selber _nicht_ Bestandteil der Treffermengen (./.), man kann also auch nicht mit Backreferenz darauf zugreifen. Deine Ergebnisse sammeln sich dann im Array[2]

Harzliche Grüße vom Berg und Frohe Weihnachtszeit

Tom

--

Nur selber lernen macht schlau
zweifeln lassen :-)