当我尝试使用simplexml_load_string
将HTML文件作为XML加载时,我收到很多关于HTML的错误和警告但是它失败了,有没有办法使用SimpleXML正确加载html文件?
此HTML文件可能包含不需要的空格,也可能是其他一些我希望SimpleXML忽略的错误。
答案 0 :(得分:21)
将DomDocument::loadHtmlFile
与simplexml_import_dom
一起使用,将非正常的HTML网页加载到SimpleXML中。
答案 1 :(得分:3)
我建议使用PHP Simple HTML DOM。我自己使用它来处理从页面抓取到操作HTML模板文件的任何事情,它非常简单而且非常强大,应该很适合你的需求。
以下是他们的文档中的一些示例,其中显示了您可以执行的操作:
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
答案 2 :(得分:0)
检查this手册页,其中一个选项(例如LIBXML_NOERROR)可能对你有帮助..但请记住,html不一定是有效的xml,因此将其解析为xml可能无效。 / p>
答案 3 :(得分:0)
这里有一些加载外部html页面的快速代码,然后用简单的xml解析它。
//suppresses errors generated by poorly-formed xml
libxml_use_internal_errors(true);
//create the html object
$html = new DOMDocument();
//load the external html file
$html->loadHtmlFile('http://blahwhatever.com/');
//import the HTML object into simple xml
$shtml = simplexml_import_dom($html);
//print the result
echo "<pre>";
print_r($shtml);
echo "</pre>";