人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

参照サイトの通り、ほとんどコピペ(simple_html_dom.phpは同じフォルダーにダウンロード)
のプログラムを実行すると
--プログラム
<?php
include_once('simple_html_dom.php');
$dom_html = file_get_contents("http://yahoo.co.jp");
$title = $dom_html->find('title');
echo $title[0]->innertext;
?>
--プログラム以上
以下のエラーが出ます。
--エラー
Fatal error: Uncaught Error: Call to a member function find() on string in C:\Tools\htdocs\jitudata\test007.php:8 Stack trace: #0 {main} thrown in C:\Tools\htdocs\jitudata\test007.php on line 4
---

Windows10
PHP7
です。

エラーの解決法を教えてください。
よろしくお願いします。

参照サイト
http://pg.kdtk.net/1264

●質問者: kohhi
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●500ポイント ベストアンサー

ここを

$dom_html = file_get_contents("http://yahoo.co.jp");

こんな感じにしたら動きませんか?

$dom_html = file_get_contents("https://www.yahoo.co.jp");


simple_html_dom.php が 301 redirect に対応していないことと、
参考にしているサイトが、実際に動作確認をしていないことが
ほぼコピペでもうまく動かない原因だと思います。


kohhiさんのコメント
早速お返事ありがとうございます。 やはりエラーになります。 エラーメッセージも同じです。 お手数おかけしてすいません。

a-kuma3さんのコメント
file_get_contents ではなく、file_get_html 関数を使ってください。 >|perl| $dom_html = file_get_html("https://www.yahoo.co.jp/"); ||<

kohhiさんのコメント
やりました。 エラーメッセージが、Warning 2つでます。 Warning: file_get_contents(): stream does not support seeking in C:\Tools\htdocs\jitudata\simple_html_dom.php on line 70 Warning: file_get_contents(): Failed to seek to position -1 in the stream in C:\Tools\htdocs\jitudata\simple_html_dom.php on line 70 Fatal error のメッセージは同じです。 simple_html_dom.php の69,70,71行目は(70行目はコメントアウトされてます。) 69:$dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $defaultBRText); 70:// For sourceforge users: uncomment the next line and comment the retreive_url_contents line 2 lines down if it is not already done. 71:$contents = file_get_contents($url, $use_include_path, $context, $offset); お手数おかけしてすいません。 いつもありがとうございます。

a-kuma3さんのコメント
ローカルファイルじゃない読み先に対して、先頭位置以外から読み込もうとしてるからですね、きっと。 simple_html_dom.php をいじっても良いなら、[https://stackoverflow.com/a/44131040:title=offset を削除しちゃう]か、 >|perl| $contents = file_get_contents($url, $use_include_path, $context); ||< 文字列として取得してからパースするようにします。 >|perl| <?php include_once('simple_html_dom.php'); $html = file_get_contents("http://www.yahoo.co.jp"); $dom_html = str_get_html($html); $title = $dom_html->find('title'); echo $title[0]->innertext; ||<

kohhiさんのコメント
どちらの方法でもできました。 ありがとうございました。 「offset を削除しちゃうか」、方でやります。 リンクの方は、原因が「パソコン変えた」っていうことだと思います。 when I moved it from one system to another 僕も7月に変えたばかりでした。 ただ、古いほうでも同じ現象が出るので、 変えたせいではないだろうと思ってました。 (didn;t cause any further problems for me). 今のところ何の影響もないよ、っていうことだと思います。 あまり深いことは考えないで、このまま進めます。 ありがとうございました。 また、よろしくお願いします。

a-kuma3さんのコメント
なんかぐずぐずな回答ですみません。 とりあえず、解決できてホッとしてます <tt>(^^;</tt>

kohhiさんのコメント
感謝しております。ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ