Frage

Ich suche nach guten Methoden zur Manipulation von HTML in PHP.Das Problem, das ich derzeit habe, ist zum Beispiel der Umgang mit fehlerhaftem HTML.

Ich erhalte eine Eingabe, die etwa so aussieht:

<div>This is some <b>text

Wie Sie bemerkt haben, fehlen im HTML schließende Tags.Ich könnte Regex oder einen XML-Parser verwenden, um dieses Problem zu lösen.Es ist jedoch wahrscheinlich, dass ich in Zukunft weitere DOM-Manipulationen durchführen muss.Ich frage mich, ob es gute PHP-Bibliotheken gibt, die die DOM-Manipulation ähnlich handhaben wie Javascript mit der DOM-Manipulation.

War es hilfreich?

Lösung

PHP hat eine PECL-Erweiterung, die Ihnen Zugriff auf die Funktionen von HTML Tidy ermöglicht.Tidy ist eine ziemlich leistungsstarke Bibliothek, die in der Lage sein sollte, solchen Code zu verarbeiten und Tags auf intelligente Weise zu schließen.

Ich verwende es, um fehlerhafte XML- und HTML-Dateien zu bereinigen, die mir vor dem Import von einem Kleinanzeigensystem zugesandt wurden.

Andere Tipps

Ich habe festgestellt, dass PHP Simple HTML DOM die bisher nützlichste und unkomplizierteste Bibliothek ist.Besser als PECL würde ich sagen.

Ich habe einen Artikel darüber geschrieben So verwenden Sie es, um die Tourdaten von MySpace-Künstlern zu ermitteln (Nur ein Beispiel.) Hier ist ein Link zum PHP einfacher HTML-Dom-Parser.

Die jetzt integrierte DOM-Bibliothek kann dieses Problem leicht lösen.Die Methode „loadHTML“ akzeptiert fehlerhaftes XML, die Methode „load“ jedoch nicht.

$d = new DOMDocument;
$d->loadHTML('<div>This is some <b>text');
$d->saveHTML();

Die Ausgabe wird sein:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
  <body>
    <div>This is some <b>text</b></div>
  </body>
</html>

Für die Manipulation des DOM denke ich, dass Sie genau das suchen, was Sie suchen Das.Ich habe HTML-Dokumente aus dem Web analysiert und es hat bei mir gut funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top