HTML-Tags entfernen mittels RegExp?
Joerg Peschke
- perl
0 Rolf Rost0 Jörg Peschke0 Raik
0 Beat0 Joerg Peschke0 Beat
Hallo RexExper,
Ich weiss, das Thema ist so alt wie die Welt, aber meine Recherche in diversen Foren hat noch keine zufriedenstellende Lösung geliefert. Deswegen:
Ich bräuchte einen RexExp, der mir aus HTML-Quelltext die Tags entfernt (quasi eine Art HTML->Plaintext-Konverter).
Mein bisheriges Vorgehen
$html_text =~ s/<[^>]*>/gs;
klappt meistens, geht aber natürlich vor den Baum, wenn ich > in Attributen stehen habe:
<img = "foo" alt="bar>">blubb
liefert
">blubb
von der Problematik von maskierten > mal ganz abgesehen.
Frage: Kriegt man das mit RegExp halbwegs sauber hin? Oder muss ich doch wieder HTML::Parser den weiten Weg von CPAN her kommen lassen?
Gruesse,
Jörg
Mahlzeit
aguck:
http://cpan.uwinnipeg.ca/dist/web
Gruss, Rolf
Mahlzeit
aguck:
http://cpan.uwinnipeg.ca/dist/webGruss, Rolf
Hmm, also reingeguckt in die RemoveHTML, stelle ich fest, ist das nichts anderes als das, was ich gemacht habe:
$htmltext =~ s/<([^>]|\n)*>//ig;
meins war
$htmltext =~ s/<[^>]*>//gis;
Das Problem mit >-Zeichen in Attributen hab ich damit aber immer noch.
Hallo, programmiergott Peschke!
tscha, mit php wär das nicht passiert ;-)
http://www.php-manual.de/de/function.strip-tags.php
freundl. Grüsse aus Berlin, Raik
Hi Raik,
tscha, mit php wär das nicht passiert ;-)
http://www.php-manual.de/de/function.strip-tags.php
Ist halt ne Profi-Sprache[TM]...
Viellleicht wäre auch
http://aktuell.de.selfhtml.org/tippstricks/cgiperl/html-in-html/index.htm
ein Tipp.
Viele Grüße
Mathias Bigge
Tach,
Ist halt ne Profi-Sprache[TM]...
Meinst Du Perl oder PHP oder keins von beiden? :)
Viellleicht wäre auch
http://aktuell.de.selfhtml.org/tippstricks/cgiperl/html-in-html/index.htm
ein Tipp.
Das koennte in der Tat klappen, dass ich >-Zeichen in Attributen einfach maskiere. Danke für den Tip!
Gruesse,
Joerg
Hallo, programmiergott Peschke!
tscha, mit php wär das nicht passiert ;-)
http://www.php-manual.de/de/function.strip-tags.phpfreundl. Grüsse aus Berlin, Raik
Knapp 5000 Zeilen Quellcode von Perl nach PHP konvertieren werde ich mir wegen ein paar >-Zeichen dann doch nicht antun...das wäre ja PERLen vor die Säue werfen :)
Gruesse,
Joerg
hy Jörg
Folgender Code ist von Tom Christianson und entfernt HTML Tags (verschachtelte über mehrere Zeilen)
sowie SSI Tags
$body =~ s{ <! (.*?) ( -- .*? -- \s* )+ (.*?) > }{ if ($1 || $3) { "<!$1 $3>"; } }gesx; #HTML
$body =~ s{ < (?: [^>'"] * | ".*?" | '.*?' ) + > }{}gsx; #SSI
mfg Beat
Folgender Code ist von Tom Christianson und entfernt HTML Tags (verschachtelte über mehrere Zeilen)
sowie SSI Tags$body =~ s{ <! (.*?) ( -- .*? -- \s* )+ (.*?) > }{ if ($1 || $3) { "<!$1 $3>"; } }gesx; #HTML
$body =~ s{ < (?: [^>'"] * | ".*?" | '.*?' ) + > }{}gsx; #SSImfg Beat
Cool, vielen Dank!!! Werde ich gleich mal ausprobieren!
gruesse,
Joerg
gehts gehts nicht?
Hab' die Filter in der Eile falsch angeschrieben
hast es vielleicht bemerkt.
mfg Beat
$body =~ s{ <! (.*?) ( -- .*? -- \s* )+ (.*?) > }{ if ($1 || $3) { "<!$1 $3>"; } }gesx; #----SSI
$body =~ s{ < (?: [^>'"] * | ".*?" | '.*?' ) + > }{}gsx; # ----HTML