MudGuard: Ein regulärer Ausdruck will mal wieder nicht

Beitrag lesen

Hi,

Es soll aber nur aus den Links die Beschreibung gefiltert werden, bei denen das Alt Attribut ALT="superkingdom" vorkommt.

Dir ist klar, daß a-Elemente in HTML gar kein alt-Attribut haben?

Das sollte ja nicht so schwer sein, aber es will mir nicht gelingen, ich bekomme durchaus einen Ausdruck hin der mir bei einem der Beispiele den gewünschten Text liefert, aber hab noch keinen hinbekommen der mir etwas bei beiden liefert.

Hier mal mein Ansatz:

$such_string=~m/<A.*ALT="superkingdom".*>([^<]*)</A>/gi;

Das matcht auch
<a>bla</a><img alt="superkingdom" src="bild.png"><a>blablubb</a>

Das erste .* paßt auf '>bla</a><img ', das zweite auf ' src="bild.png"><a'

HTML allein mit Regex zu parsen ist nicht möglich.

(Erklärung was ich denke was ich Abfrage mit dem RegExp:
Einen A Tag, gefolgt von beliebigen und beliebig vielen(oder kein) Zeichen

insbesondere auch weitere Elemente

dann ein ALT="superkingdom" danach noch mal beliebige Zeichen oder keins bis zum >

bis zu einem beliebigen weiteren > - da können zwischendurch noch zig > stehen

dann werden alle Zeichen außer das < geklammert und somit gespeichert und dann muß noch mal ein </a> kommen, die ganze Sache ist case insensitive wegen des Flags i)

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.