Ist es sowieso einfacher, HTML mit Perl aus einer Zeichenfolge zu entfernen?
%Vor%Ich würde sowohl einen abgespeckten regulären Ausdruck, z. etwas wie das:
%Vor%Gibt es eine vorhandene Perl-Funktion, die einen beliebigen HTML-Code aus einer Zeichenkette streift, obwohl ich nur fettgedruckte Buchstaben, h1-Header und br stripped brauche?
Angenommen, der Code ist ein gültiger HTML-Code (keine stray & lt; - oder & gt; -Operatoren)
%Vor%Wenn Sie nur fett, h1 und br entfernen müssen
%Vor%Und Sie sollten vielleicht das HTML :: Strip -Modul
in Betracht ziehenSie sollten sich unbedingt das HTML :: Restrict ansehen, mit dem Sie sich entfernen oder einschränken können die HTML-Tags erlaubt. Ein minimales Beispiel, das alle HTML-Tags entfernt:
%Vor%Ich würde empfehlen, von HTML :: Strip wegzubleiben, weil die utf8-Codierung unterbricht .
Von perlfaq9: Wie entferne ich HTML aus einer Zeichenkette?
Der korrekteste Weg (wenn auch nicht der schnellste) ist HTML :: Parser von CPAN zu verwenden. Ein anderer, meist korrekter Weg ist die Verwendung von HTML :: FormatText, das nicht nur HTML entfernt, sondern auch versucht, den resultierenden Klartext etwas einfacher zu formatieren.
Viele Leute versuchen einen einfachen Ansatz mit regulärem Ausdruck, wie s / & lt;. *? & gt; // g, aber das scheitert in vielen Fällen, weil die Tags über Zeilenumbrüche fortgesetzt werden können, sie können zitierte spitze Klammern enthalten oder HTML-Kommentar vorhanden sein. Außerdem vergessen Leute, Entitäten zu konvertieren - wie & lt; zum Beispiel.
Hier ist ein "einfältiger" Ansatz, der für die meisten Dateien funktioniert:
%Vor%Wenn Sie eine vollständigere Lösung wünschen, sehen Sie sich das 3-stufige striphtml-Programm in Ссылка .
Hier sind einige knifflige Fälle, über die Sie nachdenken sollten, wenn Sie eine Lösung auswählen:
%Vor%Wenn HTML-Kommentare andere Tags enthalten, werden diese Lösungen auch bei Text wie folgt unterbrochen:
%Vor%