Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 21.04.2013, 12:43
MitjaStachowiak MitjaStachowiak ist offline
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard Perl: HTML parsen mit Standalone-Tags

Hallo,
ich verwende das Modul HTML::Parser, um HTML-Code, der von Anwendern hochgeladen wird, zu überprüfen. Ein Aspekt ist, dass alle Elemente, die geöffnet werden, wieder geschlossen werden müssen.
Also folgender Code wäre ok:
HTML-Code:
<P>hallo <SPAN style="">test</SPAN><B>fett</B></P>
Folgender Code soll einen Fehler erzeugen und nicht eingebunden werden:
HTML-Code:
<P>hallo <SPAN style="">test
oder:
<P> hallo <SPAN style="">test</DIV></P>
Ich verwende aktuell diesen Code:
Code:
 my $HTML = '<P>hallo,<BR><SPAN> test</SPAN></P>';
 my $open = 0;
 sub InnerHTML_start {
  $open++;
 }
 sub InnerHTML_end {
  $open--;
 }
 my $p = HTML::Parser->new(
  api_version => 3,
  start_h => [\&InnerHTML_start,"tagname, attr, attrseq, text"],
  end_h => [\&InnerHTML_end,"tagname"],
 );
 $p->parse($HTML);
 $p->eof;
 print($open); // prints 1
Wenn genau so viele Elemente geöffnet, wie auch geschlossen werden, soll 0 ausgegeben werden (Sicher, das muss noch verfeinert werden), es wird aber 1 ausgegeben. Das liegt an dem Standalone-Tag <BR>.

Wie bekomme ich das am besten in den Griff?

Im Zweifelsfall könnte ich Anhand einer Liste alle Standalone-Tags gesondert betrachten. Aber wo finde ich eine Liste mit allen Standalone-Tags?
Mit Zitat antworten
Sponsored Links