PHP DOMDocument :: loadHTMLFile,如何跳过图像和文件?

时间:2013-02-22 17:18:37

标签: php domdocument

首先,抱歉我的英语。

我正在使用HTML解析器,我会跳过图像和其他可下载的内容进行解析。

我尝试了一些变化,这是最后一个:

    $doc = new DOMDocument();
    @$doc->loadHTMLFile("http://exampledomain.com/images/img3.JPG");
    if($doc->hasChildNodes){break;}

在搜索解决方案后,我尝试了这个:

    $doc = new DOMDocument();
    @$doc->loadHTMLFile("http://exampledomain.com/images/img3.JPG");
    var_dump($doc->childNodes->length);
    foreach($doc->childNodes as $child){
        var_dump($child->nodeName);
    }

结果:

    2
    html
    html
  • 问题:jpg文件怎么能有2个节点html?
  • 问题:如何跳过文件(jpg,exe,doc等...非html文件)

1 个答案:

答案 0 :(得分:0)

你可以做的第一件事就是检查jpg,gif,png,js等的文件名,不要试图在非HTML文件上运行DOMDocument::loadHTMLFile。由于某种原因,这个函数似乎试图加载所有东西(可能是因为它设计用于处理无效的HTML)所以你不能依赖函数的输出(true成功,false失败)

这样的事情可能有所帮助:

if (false === preg_match('/^.*\.(jpg|jpeg|png|gif)$/i', $file_name)) {
   $doc = new DOMDocument();
   $doc->loadHTMLFile($file_name);
   // more code here
}