Felix Riesterer: Wie Darstellung und Inhalt trennen?

Beitrag lesen

problematische Seite

Lieber Rolf,

$tmp = new DOMDocument();
$tmp->loadHTMLFile('home.html');

genau so: Erst eine Instanz der DOMDocument-Klasse erzeugen, dann damit Methoden aufrufen.

Generell wird wohl aktuell https://github.com/Masterminds/html5-php als Ersatz empfohlen, keine Ahnung ob das die einzige Lib ist. Um die einzubinden brauchst Du aber den composer.

Intern verwendet der HTML5-Parser von Mastermind tatsächlich die DOMDocument-Klasse. Er ist dazu gedacht, HTML5-Code zu einer DOMDocument-Instanz zu parsen, oder aus ihr wieder HTML5-Quellcode zu serialisieren. Das hat den Vorteil, dass man mit den vielen üblichen DOM-Methoden in PHP arbeiten kann.

$html5 = new \Masterminds\HTML5(
  // keine HTML-Namespaces unterstützen
  ['disable_html_ns' => true]
);

// \DOMDocument-Instanz mit dem HTML5-Parser erzeugen
$domdoc = $html5->loadHTML($html_code_string);

// möglich: HTML4-Quelltext mit der \DOMDocument-Klasse ausgeben
echo $domdoc->saveHTML(); 

// besser: HTML5-Quelltext mit dem HTML5-Serializer ausgeben
echo $html5->saveHTML($domdoc);

Liebe Grüße

Felix Riesterer