2

提供された特定の URL から HTML データを解析したいと考えています。しかし、エラーがほとんどないため、データを解析できません。

これは私のコードです:-

    $html = new DOMDocument();
    $html->loadHTML($url);  //$url is where the site url is defined
    $value = array();
    foreach($html->find($identifier) as $element) //$identifier is where div, a etc is stored
    {
        $value[] = $element->src."<br />";
    }
    print_r($value);

次のエラーが表示されます

Call to undefined method DOMDocument::find()    

誰でもこれで私を助けることができます.私はcake-php 2.0を使用しています

4

4 に答える 4

2

エラーが示すように、メソッドDOMDocumentはありませんfind。ただし、非常に優れた DOM 解析メソッドが多数あります: http://www.php.net/manual/en/class.domdocument.php

要素名の場合$identifier、使用するのが理にかなっています

foreach ($html->getElementsByTagName($identifier) as $element) {
    $value[] = $element->nodeValue + "<br>";
}
于 2013-03-01T07:12:35.673 に答える
1

これは機能しません:

$html->loadHTML($url);

LoadHTML は文字列をロードします。これは次のように機能します。

$html->loadHTML("<html><body>Test<br></body></html>");

loadHTMLfile を使用してみてください:

$html->loadHTMLFile("filename.html");

参照: http://www.php.net/manual/en/domdocument.loadhtmlfile.php

于 2013-03-01T07:12:30.793 に答える
1

使用しているクラスのドキュメントを読んでみませんか? DOMDocumentは php.net サイトで十分に文書化されており、findメソッドについては言及されていません。

DOMDocumentJavaScriptや など、どの開発者にgetElementsByTagNameもなじみのあるメソッドがたくさんありgetElementByIdます。

また、URL から HTML をロードしている場合DOMDocument::loadHTML、URI ではなく有効な HTML を含む文字列が必要になるため、このメソッドは機能しません。

DOMDocument::loadHTMLFileURL パラメーターで動作する可能性があります (このコンピューターに PHP がインストールされていないため確認できません) が、動作しない場合は組み合わせて動作DOMDocument::loadHTMLfile_get_contentsせることができます。

于 2013-03-01T07:13:39.247 に答える
0

Cake php のドキュメントを見る限り、domDocument クラスの find() 関数はありません。

ここに記載されているXml クラスの toArray() メソッドを使用するのはどうですか

于 2013-03-01T07:28:30.263 に答える