0

まず第一に、私の英語について申し訳ありません。

私は 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 ファイル)
4

1 に答える 1

0

DOMDocument::loadHTMLFileここで最初にできることは、jpg、gif、png、js などのファイル名を確認し、 HTML 以外のファイルで実行しようとしないことです。true何らかの理由で、この関数はすべてを読み込もうとしているように見えるため (おそらく、無効な HTML を処理するように設計されているため)、関数の出力 (成功時false、失敗時) に頼ることはできません。

このようなものが役立つかもしれません:

if (false === preg_match('/^.*\.(jpg|jpeg|png|gif)$/i', $file_name)) {
   $doc = new DOMDocument();
   $doc->loadHTMLFile($file_name);
   // more code here
}
于 2013-02-22T17:49:12.740 に答える