Fatal error: Call to a member function find() on a non-object in C:\Tools\htdocs\yuumeijin\ren130.php on line 15

と以下のプログラムだとエラーになります。

<?PHP
include_once('simple_html_dom.php');
$fp = file_get_contents('http://ja.wikipedia.org/wiki/大久保佳代子');
$mystring1 = '来歴';
$pos1 = strpos($fp, $mystring1, strpos($fp, $mystring1)+1);
$mystring2 = '脚注';
$pos2 = strpos($fp, $mystring2,strpos($fp, $mystring2)+1);
$pos3 = $pos2-$pos1;
$fp1 = substr($fp, $pos1, $pos3);

//var_dump($fp1);
$fp1->find('a');
?>
最後から2行をコメントアウトを以下のように逆にすると、
var_dump($fp1);
//$fp1->find('a');
エラーは出ません。
これは、エラーのように non-object ではないと思えてなりません。

記述エラーの対処法を教えていただけると大変助かります。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/07/17 17:34:21
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:snow0214 No.2

回答回数470ベストアンサー獲得回数116

ポイント200pt

プログラムの目的がよく分からないのですが、下のプログラムを試してみてください。

来歴~脚注の間のコンテンツを抜き出す部分は、質問のコードそのままです。
findメソッドを使うには、対応するDOMオブジェクト $html を file_get_htmlで取り出してください。
ただし、Aタグの量が膨大なので、ブラウザによってはvar_dumpをすることで落ちるかもしれません。

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

$str = file_get_contents('http://ja.wikipedia.org/wiki/大久保佳代子');
$mystring1 = '来歴';
$pos1 = strpos($str, $mystring1, strpos($str, $mystring1)+1);
$mystring2 = '脚注';
$pos2 = strpos($str, $mystring2,strpos($str, $mystring2)+1);
$pos3 = $pos2 - $pos1;
$ss = substr($str, $pos1, $pos3);
echo $ss;

$html = file_get_html('http://ja.wikipedia.org/wiki/大久保佳代子');
$ret = $html->find('a');
var_dump($ret);
?>

その他の回答1件)

id:watercooler No.1

回答回数289ベストアンサー獲得回数51

ポイント100pt

file_get_contents で得るものは文字列よ。だからstrposやsubstrが使えるの。

原因はsimple_html_dom.phpのstr_get_htmlファンクションが抜けてるからよ。

$fp2 = str_get_html($fp1);
echo $fp2->find('a', 0);
id:snow0214 No.2

回答回数470ベストアンサー獲得回数116ここでベストアンサー

ポイント200pt

プログラムの目的がよく分からないのですが、下のプログラムを試してみてください。

来歴~脚注の間のコンテンツを抜き出す部分は、質問のコードそのままです。
findメソッドを使うには、対応するDOMオブジェクト $html を file_get_htmlで取り出してください。
ただし、Aタグの量が膨大なので、ブラウザによってはvar_dumpをすることで落ちるかもしれません。

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

$str = file_get_contents('http://ja.wikipedia.org/wiki/大久保佳代子');
$mystring1 = '来歴';
$pos1 = strpos($str, $mystring1, strpos($str, $mystring1)+1);
$mystring2 = '脚注';
$pos2 = strpos($str, $mystring2,strpos($str, $mystring2)+1);
$pos3 = $pos2 - $pos1;
$ss = substr($str, $pos1, $pos3);
echo $ss;

$html = file_get_html('http://ja.wikipedia.org/wiki/大久保佳代子');
$ret = $html->find('a');
var_dump($ret);
?>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません