0

simple_html_dom.phpファイルをダウンロードしてWebサーバーにアップロードし、すぐに簡単なスクリプトでテストしましたが、機能しないか、少なくとも何も出力されないため、機能しないと思います。

スクリプトは次のとおりです。

<?php
require('simple_html_dom.php');

// Retrieve the DOM from a given URL
$html = file_get_html('http://davidwalsh.name/');

// Find all "A" tags and print their HREFs
foreach($html->find('a') as $e) {
    echo $e->innertext . '<br>';
}
?>

このサイトhttp://davidwalsh.name/php-notificationsからスクリプトを入手しましたが、他のサイトでも同じように表示されていたため、何も出力されない理由がわかりません。

私の推測では、スクリプトは他のWebサイトからデータを取得できません。これは、ここで遭遇した問題のようなものです。クロスドメインデータの取得php

もしそうなら、問題を回避する方法はありますか?

BIno Carlosが前にリンクした質問に対する回答で、「ブラウザではなくサーバーからデータをロードしているため、実際にはクロスドメインの問題ではない」と述べたので、たとえばブラウザからデータをロードする方法がある可能性があります。 ?

したがって、user868766が彼の回答で示唆しているように、エラーを報告しない2つのini_setメソッドを試したので、スクリプトは明らかに問題なく機能しているように見えます。$ htmlでprint_r()メソッドを試したところ、次のように出力されました。

simple_html_dom Object ( [root] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => root [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => [_] => Array ( [0] => -1 [1] => 1 ) [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [nodes] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => root [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => [_] => Array ( [0] => -1 [1] => 1 ) [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) ) [callback] => [lowercase] => 1 [pos:protected] => 0 [char:protected] => [size:protected] => 0 [cursor:protected] => 1 [parent:protected] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => root [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => [_] => Array ( [0] => -1 [1] => 1 ) [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [token_blank:protected] => [token_equal:protected] => =/> [token_slash:protected] => /> [token_attr:protected] => > [self_closing_tags:protected] => Array ( [img] => 1 [br] => 1 [input] => 1 [meta] => 1 [link] => 1 [hr] => 1 [base] => 1 [embed] => 1 [spacer] => 1 ) [block_tags:protected] => Array ( [root] => 1 [body] => 1 [form] => 1 [div] => 1 [span] => 1 [table] => 1 ) [optional_closing_tags:protected] => Array ( [tr] => Array ( [tr] => 1 [td] => 1 [th] => 1 ) [th] => Array ( [th] => 1 ) [td] => Array ( [td] => 1 ) [li] => Array ( [li] => 1 ) [dt] => Array ( [dt] => 1 [dd] => 1 ) [dd] => Array ( [dd] => 1 [dt] => 1 ) [dl] => Array ( [dd] => 1 [dt] => 1 ) [p] => Array ( [p] => 1 ) [nobr] => Array ( [nobr] => 1 ) ) [doc:protected] => [noise:protected] => Array ( ) )
4

1 に答える 1

0

あなたが投稿したコードは私にとってはうまくいきます。

以下の行を script の上に置いて、これらを試すことができると思います:

    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);

$htmlのprint_rもチェック

    print_r($html);

この助けを願っています。

于 2012-07-12T10:41:22.717 に答える