regex for html filtering

regex for html filtering

am 15.02.2006 22:41:34 von Daniel Grunow

Hallo,

ich möchte in einem String alle Tags, aber keine Links entfernen.
Ich habs mit Regulären Ausdrücken versucht, aber mehr Schlecht als Recht
hin bekommen.
Ich habe jetzt nämlich Ausdrücke für:

1. alle Tags finden
(<[^>]*>)

2. alle Links finden (Text)
(]*)>(.*))

Aber wie kann ich denn jetzt die Links von den Tags ausschließen,
so das ich alle Tags, jedoch keine Links mit Regex replacen kann?

Daniel

Re: regex for html filtering

am 16.02.2006 04:42:55 von ReneeB

Da dürften Module wie HTML::Parser bzw. HTML::TreeBuilder wohl besser
geeignet sein...

ReneeB

Re: regex for html filtering

am 16.02.2006 20:52:15 von Markus Kottenhahn

Daniel Grunow schrieb:

> 1. alle Tags finden
> (<[^>]*>)
>
> 2. alle Links finden (Text)
> (]*)>(.*))
>
> Aber wie kann ich denn jetzt die Links von den Tags ausschließen,
> so das ich alle Tags, jedoch keine Links mit Regex replacen kann?

Damit dürfte es passen:

<([a][^\s]|[b-z])[^>]*>

Entweder das Tag fängt mit a an, dann wird das zweite Zeichen
zwangsläufig ein Buchstabe oder eine Ziffer sein (oder aber es ist halt
ein Link, was damit ausgeschlossen wird), aber keinesfalls ein Blank.
Oder aber, das Tag fängt mit b bis z an, dann isses eh kein Link.
Beachte, dass der Regex hier nicht case-sensitive ist, also Schalter /i
hintendran nicht vergessen.

Achtung! Ungetestet;)