9

サーバーにない html を解析しようとしています

    $dom = new DOMDocument();
    $dom->loadHTMLfile("http://www.some-site.org/page.aspx");      
    echo    $dom->getElementById('his_id')->item(0);

しかし、php は次のようなエラーを返しますID his_id already defined in http://www.some-site.org/page.aspx, line: 33。DOMDocument が無効な html を扱っているためだと思います。では、無効であってもどのように解析できますか?

4

3 に答える 3

9

解析する前に、HTML Tidyを実行してクリーンアップする必要があります。

$html = file_get_contents('http://www.some-site.org/page.aspx');
$config = array(
  'clean' => 'yes',
  'output-html' => 'yes',
);
$tidy = tidy_parse_string($html, $config, 'utf8');
$tidy->cleanRepair();
$dom = new DOMDocument;
$dom->loadHTML($tidy);

このオプションのリストを参照してください。

于 2010-04-24T01:23:36.917 に答える
2

見てください: libxml_use_internal_errors()

http://php.net/libxml_use_internal_errors

于 2011-04-21T09:21:39.937 に答える
0

ドキュメントを読むと、$dom->strictErrorCheckingデフォルトで TRUE になっていることがわかります。を設定するとどうなります$dom->strictErrorChecking = falseか?

于 2010-04-24T01:24:41.613 に答える