PHP SimpleXML:如何加载HTML文件?

时间:2010-07-05 09:17:58

标签: php html simplexml

当我尝试使用simplexml_load_string将HTML文件作为XML加载时,我收到很多关于HTML的错误和警告但是它失败了,有没有办法使用SimpleXML正确加载html文件?

此HTML文件可能包含不需要的空格,也可能是其他一些我希望SimpleXML忽略的错误。

4 个答案:

答案 0 :(得分:21)

DomDocument::loadHtmlFilesimplexml_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>";