PHP
HTML analysieren
Suche…
Analysieren von HTML aus einem String
PHP implementiert einen DOM Level 2- kompatiblen Parser, der es Ihnen ermöglicht, mit HTML mit bekannten Methoden wie getElementById()
oder appendChild()
.
$html = '<html><body><span id="text">Hello, World!</span></body></html>';
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
echo $doc->getElementById("text")->textContent;
Ausgänge:
Hello, World!
Beachten Sie, dass PHP Warnungen vor etwaigen Problemen mit HTML ausgibt, insbesondere wenn Sie ein Dokumentfragment importieren. Um diese Warnungen zu vermeiden, weisen Sie die DOM-Bibliothek (libxml) an, ihre eigenen Fehler zu behandeln, indem Sie libxml_use_internal_errors()
aufrufen, bevor Sie Ihren HTML- libxml_use_internal_errors()
importieren. Sie können dann mit libxml_get_errors()
ggf. Fehler behandeln.
XPath verwenden
$html = '<html><body><span class="text">Hello, World!</span></body></html>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$span = $xpath->query("//span[@class='text']")->item(0);
echo $span->textContent;
Ausgänge:
Hello, World!
SimpleXML
Präsentation
SimpleXML ist eine PHP-Bibliothek, die eine einfache Möglichkeit bietet, mit XML-Dokumenten zu arbeiten (insbesondere Lesen und Durchlaufen von XML-Daten).
Die einzige Einschränkung ist, dass das XML-Dokument wohlgeformt sein muss.
XML-Analyse mit prozeduralem Ansatz
// Load an XML string
$xmlstr = file_get_contents('library.xml');
$library = simplexml_load_string($xmlstr);
// Load an XML file
$library = simplexml_load_file('library.xml');
// You can load a local file path or a valid URL (if allow_url_fopen is set to "On" in php.ini
Analysieren von XML mithilfe des OOP-Ansatzes
// $isPathToFile: it informs the constructor that the 1st argument represents the path to a file,
// rather than a string that contains 1the XML data itself.
// Load an XML string
$xmlstr = file_get_contents('library.xml');
$library = new SimpleXMLElement($xmlstr);
// Load an XML file
$library = new SimpleXMLElement('library.xml', NULL, true);
// $isPathToFile: it informs the constructor that the first argument represents the path to a file, rather than a string that contains 1the XML data itself.
Zugriff auf Kinder und Attribute
- Wenn SimpleXML ein XML-Dokument analysiert, werden alle XML-Elemente oder Knoten in Eigenschaften des resultierenden SimpleXMLElement-Objekts konvertiert
- Außerdem werden XML-Attribute in ein assoziatives Array konvertiert, auf das von der Eigenschaft, zu der sie gehören, zugegriffen werden kann.
Wenn Sie deren Namen kennen:
$library = new SimpleXMLElement('library.xml', NULL, true);
foreach ($library->book as $book){
echo $book['isbn'];
echo $book->title;
echo $book->author;
echo $book->publisher;
}
- Der Hauptnachteil dieses Ansatzes besteht darin, dass die Namen aller Elemente und Attribute im XML-Dokument bekannt sein müssen.
Wenn Sie deren Namen nicht kennen (oder Sie nicht wissen wollen):
foreach ($library->children() as $child){
echo $child->getName();
// Get attributes of this element
foreach ($child->attributes() as $attr){
echo ' ' . $attr->getName() . ': ' . $attr;
}
// Get children
foreach ($child->children() as $subchild){
echo ' ' . $subchild->getName() . ': ' . $subchild;
}
}