Christian Kruse: strip_tags soll auch javacript löschen

Beitrag lesen

Hallo dedlfix,

Ich lese mittels file_get_contents eine Webseite ein, anschliessend säubere ich den Code mit strip_tags. Doch leider bleibt, wenn vorhanden javacript zurück. Wie bekomme ich den javascript auch aus dem Code.

Mit strip_tags() gar nicht. Entweder du hast in deinem Fall ein Muster, das du mittels regulärem Ausdruck finden kannst, oder du willst unbekannte Texte lesen, dann brauchst du einen HTML-Parser, der sowas wie ein DOM erzeugt. Dann kannst du darin die Elemente suchen. Wenn du dann auch noch Javascript-Inhalte in Attributen finden möchtest, ... das wird nicht einfach.

Einfacher als du vielleicht glaubst. JS in Attributen ist irrelevant, das wird durch strip_tags entfernt. JS aus Tags kann man mit DOMDocument entfernen:

<?php

$dom = new DOMDocument();
$dom->loadHTML($html);

$scripts = $dom->getElementsByTagName('script');

foreach($scripts as $item) {
  $item->parentNode->removeChild($item); 
}

$html = strip_tags($dom->saveHTML());

LG,
CK