Ich habe eine Variable namens $articleText
und sie enthält HTML-Code. Es gibt script
und style
Codes in <script>
und <style>
html Elementen. Ich möchte die $articleText
scannen und diese Codeabschnitte entfernen. Wenn ich auch die tatsächlichen HTML-Elemente <script>
, </script>
, <style>
und </style>
entfernen könnte, würde ich das auch tun.
Ich stelle mir vor, dass ich Regex benutzen muss, aber ich bin nicht darin erfahren.
Kann jemand helfen?
Ich wünschte, ich könnte etwas Code zur Verfügung stellen, aber wie ich sagte, ich bin nicht in Regex geschult, so dass ich nichts zu zeigen habe.
Auch Regex ist kein gutes Werkzeug für diese Art von Aufgabe, für kleine, einfache Aufgaben kann es funktionieren.
Wenn Sie nur den inneren Text von Tags entfernen möchten, verwenden Sie:
%Vor%Sehen Sie sich die Demo hier an.
Wenn Sie auch Tags entfernen möchten, wäre die Ersatzzeichenfolge im obigen Code leer, also nur ""
.
Hier sind Beispieldaten:
%Vor%Und jetzt die buchstabierte Version:
%Vor%Und eine Alternative (macht dasselbe, nur keine Funktionsdeklarationen):
%Vor%Der Trick besteht darin, iterieren rückwärts beim Löschen von Knoten . Und getElementsByTagName wird das gesamte DOM für Sie durchqueren, also müssen Sie das nicht (nichts davon hat hasChildNodes, nextSibling, nextChild Zeug).
Vielleicht liegt die beste Lösung irgendwo zwischen diesen beiden extremen Beispielen.
Ich konnte mir nicht helfen, das ist wahrscheinlich die beste Version meiner Vorschläge. Es enthält keinen Incrementor ( $i
), um Dinge aufzumischen und entfernt von unten nach oben:
Wenn Sie Knoten entfernen, werden sie in der Child-Liste des Elternteils nach oben verschoben, sodass 1 zu 0 und 2 zu 1 usw. wird. Machen Sie dies solange ( while
) bis es nicht mehr existiert ( ->item
gibt null zurück ). Auch dies ist in einer wiederverwendbaren Funktion verpackt.
Eine Regex, um dies zu tun, wäre unglaublich stumpf, wegen der Möglichkeit von Tags innerhalb von Tags und solchen verwirrenden Konstrukten wie Tag-Attributen.
Ich würde vorschlagen, dies in einem DOM (entweder in PHP oder JavaScript) zu tun, das die unerwünschten Tags durch tatsächliches Parsing identifizieren und entfernen kann.
Wenn wir davon ausgehen, dass es nicht nur darum geht, dass Ihr Design nicht von zufälligen Stilen durcheinander gebracht wird, sondern Ihre Site auch vor dem Benutzer-Scripting schützt, ist das Entfernen dieser Tags nicht allein für Sie sicher.
Betrachten Sie den Fall von Ereignisattributen (Beispiel: onmouseover, onclick):
%Vor%oder noch schlimmer
%Vor%Damit ist es ziemlich trivial, alle möglichen Dinge in das Dokument einzufügen.
Letztes Beispiel für Stylesheet-Mods aus David Walsh - Ссылка
... ist eine bewährte Drittanbieter-Bibliothek, die sich darauf spezialisiert hat. Ich empfehle HTML Purifier . Es wird Ihre Benutzereingabe von Stilen, Skripten und lästigen Ereignisattributen befreien.