Kommentare in HTML finden

8

Ich habe eine HTML-Datei und darin kann es Javascript, PHP und all diese Dinge geben, die Leute in ihre HTML-Datei einfügen können oder nicht.

Ich möchte alle Kommentare aus dieser HTML-Datei extrahieren.

Ich kann dabei auf zwei Probleme hinweisen:

  1. Was ein Kommentar in einer Sprache ist, darf kein Kommentar in einem anderen sein.

  2. In Javascript werden die restlichen Zeilen mit dem // -Marker auskommentiert. Aber URLs enthalten auch // in ihnen und ich kann daher Teile von URLs gut eliminieren, wenn ich Übernehmen Sie einfach das Ersetzen von // und dann das Rest der Zeile, mit nichts.

Das ist also kein triviales Problem.

Gibt es irgendwo schon eine Lösung dafür?

Hat schon jemand das gemacht?

    
Hermann Ingjaldsson 19.10.2012, 10:25
quelle

4 Antworten

2

Problem 2: Wird nicht jede URL mit "www.url.com" oder "www.url.com" zitiert, wenn Sie sie in einer der beiden Sprachen schreiben? Ich bin mir nicht sicher. Wenn das der Fall ist, müssen Sie lediglich den Code analysieren und prüfen, ob vor den Backslashes Anführungszeichen stehen, um zu wissen, ob es sich um eine echte URL oder nur um einen Kommentar handelt.

    
Swedish dude 19.10.2012 15:04
quelle
1

Betrachte Parser-Generatoren wie ANTLR, die Grammatiken für viele Sprachen haben, und schreibe einen verschachtelten Parser, um Kommentare zuverlässig zu finden. Reguläre Ausdrücke helfen Ihnen nicht, wenn Genauigkeit wichtig ist. Selbst dann ist es nicht 100% genau.

Betrachten Sie

Problem 3, ein Kommentar in einer Sprache ist nicht immer ein Kommentar in einer Sprache.

%Vor%

Problem 4, ein in eine Sprache eingebetteter Kommentar ist offensichtlich kein Kommentar.

%Vor%

Problem 5, was ein Kommentar ist, kann davon abhängen, wie der Browser konfiguriert ist.

%Vor%

Ich musste dieses Problem teilweise für kontextabhängige Templating-Systeme lösen, die Kommentare aus dem Quellcode eleminieren, um undichte Software-Implementierungsdetails zu vermeiden.

Ссылка zeigt einen Testfall, in dem ein Kommentar in JavaScript identifiziert wird. Spätere Testfälle zeigen Kommentare, die in CSS und HTML identifiziert wurden. Sie können diesen Code möglicherweise anpassen, um Kommentare zu finden. Kommentare in PHP-Code-Abschnitten werden nicht behandelt.

    
Mike Samuel 19.10.2012 15:15
quelle
0

Es scheint von Ihrem Wort her, dass Sie über einen Ansatz nachdenken, der auf regulären Ausdrücken basiert: Es ist ein Schmerz, dies für die gesamte Datei zu tun. Versuchen Sie, einige Werkzeuge zu verwenden, um interessanten oder uninteressanten Text hervorzuheben oder zu bearbeiten wird von Ihrem Sieb gemäß den Kriterien zum Aufbewahren / Verwerfen zurückgelassen. Sehen Sie sich HTML :: Tree und TreeBuilder an, es könnte sehr nützlich sein, mit dem HTML-Markup umzugehen.

    
Daniel 19.10.2012 12:34
quelle
0

Ich würde die HTML-Datei in ein Zeichen-Array konvertieren und analysieren. Sie können Schlüsselzeichenfolgen wie "& lt;", "-", "www", "http" erkennen, während Sie vorwärts gehen und diese Segmente überspringen oder löschen.

Die Start / Ende-Indizes müssen korrekt identifiziert werden, was eine Herausforderung darstellt, aber Sie haben volle Kraft.

Es gibt auch andere Möglichkeiten, den Prozess zu vereinfachen, wenn die Leistung kein Problem darstellt. Zum Beispiel können alle Tags mit XML :: Twig erfasst werden und die Zeichenfolge kann analysiert werden, um JS-Kommentare zu erkennen.

    
Ogla V. Sungutay 21.10.2012 21:40
quelle

Tags und Links