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

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 ではないと思えてなりません。

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


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

▽最新の回答へ

1 ● 井戸端さん
●100ポイント

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

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

$fp2 = str_get_html($fp1);
echo $fp2->find('a', 0);

2 ● snow0214
●200ポイント ベストアンサー

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

来歴?脚注の間のコンテンツを抜き出す部分は、質問のコードそのままです。
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);
?>
関連質問

●質問をもっと探す●



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