PHP
Analysera HTML
Sök…
Analysera HTML från en sträng
PHP implementerar en DOM Level 2- kompatibel parser, så att du kan arbeta med HTML med kända metoder som getElementById()
eller 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;
utgångar:
Hello, World!
Observera att PHP kommer att avge varningar om problem med HTML, särskilt om du importerar ett dokumentfragment. Om du vill undvika dessa varningar ber du DOM-biblioteket (libxml) att hantera sina egna fel genom att ringa libxml_use_internal_errors()
innan du importerar din HTML. Du kan sedan använda libxml_get_errors()
att hantera fel vid behov.
Använda XPath
$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;
utgångar:
Hello, World!
SimpleXML
Presentation
SimpleXML är ett PHP-bibliotek som ger ett enkelt sätt att arbeta med XML-dokument (särskilt läsning och iterering genom XML-data).
Den enda begränsningen är att XML-dokumentet måste vara välformat.
Analysera XML med hjälp av procedurmetod
// 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
Analysera XML med OOP-strategi
// $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.
Tillgång till barn och attribut
- När SimpleXML analyserar ett XML-dokument konverterar det alla sina XML-element, eller noder, till egenskaper för det resulterande SimpleXMLElement-objektet
- Dessutom konverterar det XML-attribut till en associerande grupp som kan nås från den egenskap som de tillhör.
När du vet deras namn:
$library = new SimpleXMLElement('library.xml', NULL, true);
foreach ($library->book as $book){
echo $book['isbn'];
echo $book->title;
echo $book->author;
echo $book->publisher;
}
- Den största nackdelen med denna metod är att det är nödvändigt att känna till namnen på varje element och attribut i XML-dokumentet.
När du inte känner till deras namn (eller inte vill veta dem):
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;
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow