• 締切済み

他サイトからの値の取得

simple_html_dom.php を使用して、他のサイトから値を取得しようとしています。 <table summary="abc"> <tr> <td width="220">モンブラン</td> <td width="120">300円</td> </tr> </table> となっていて、「300円」を取り出したいなら、 $cake_price_all=$e->find('table[summary=abc]'); $price=$cake_price_all[0]->find('td'); echo $price[1]; で取得できます。 質問は、下記のように日本語で書いてある場合の取得方法です。 <table summary="ケーキ"> <tr> <td width="220">モンブラン</td> <td width="120">300円</td> </tr> </table> $string="ケーキ"; $codeList = array("Shift_JIS","EUC-JP","SJIS","UTF-8","JIS");//エンコード用リスト $string = mb_convert_encoding($string,"UTF-8",mb_detect_encoding($string,$codeList)); //echo $string; $cake_price_all=$e->find('table[summary='.$string.']'); $price=$cake_price_all[0]->find('td'); echo $price[1]; これでは、エラーになります。 この日本語のワードで検索しなければならない場合の書き方を教えてください。

みんなの回答

回答No.2

Array to string conversion in C:\xampp\htdocs\cake_price_get.php on line 行番号 その行が多分 $string = mb_convert_encoding($string,"UTF-8",mb_detect_encoding($string,$codeList)); Array to string conversion 配列を変換してるよ $string が配列なんじゃない? その cake_price_get.php がどういう物かわからないからよーわかりませんが。 エラー出る前にでも print_r($string);してみては?

cej9rbwh
質問者

お礼

回答ありがとうございます。 日本語ではなく、代わりに「abc」を使って、検索結果を実行した場合、 $cake_price_all=$e->find('table[summary=abc]'); echo $cake_price_all[0]; で表示されるものは、 <table summary="abc"> <tr> <td width="220">モンブラン</td> <td width="120">300円</td> </tr> </table> の部分です。つまり、テーブルタグで囲まれた部分が、ごっそり取得されます。では、「abc」を日本語の「ケーキ」に変えると、 Undefined offset: 0 in C:\xampp\htdocs\cake_price_get.php on line 行番号 のエラーになります。ですので、文字コードを一致させた上で、検索をかけないといけないと思い、mb_convert_encodingとか使っています。 ご指摘のように、print_r($string); すると、エラーはでないものの、文字列が文字化けした状態で表示されます。ですので、文字コードが異なるもの同士で検索をかけているため、見つからないのではないか? 正しい文字コードで検索し、その結果を文字化けしない状態で表示させるには? というところで、行き詰まっています。

すると、全ての回答が全文表示されます。
回答No.1

すごい質問ですな。。。。。 どんなエラーが出るかもわからず、 その関数の中身もわからず、 誰が答えれるの?wwwwwwww まずは質問の仕方を勉強しましょう。。 どういうエラーが出て、自分がやった問題の切り分け方等々 問題の切り分け等々をまったくやってないならそれも書きましょう。 丸投げ質問は嫌われるとは思いますが。

cej9rbwh
質問者

お礼

ご指摘ありがとうございました。関数は、他サイトから値・文字列などを取得するときに使われるsimplehtmldomを使っています。 参考:http://simplehtmldom.sourceforge.net/manual.htm エラーは、 Notice: Array to string conversion in C:\xampp\htdocs\cake_price_get.php on line 行番号 Array です。 <table summary="ケーキ"> を <table summary="abc"> として、$string="abc"; とすると、 $cake_price_all=$e->find('table[summary='.$string.']'); $price=$cake_price_all[0]->find('td'); echo $price[1]; で価格が取得できたので、検索に文字列を使用した場合の書き方は合っていると思います。 問題は、 $string = mb_convert_encoding($string,"UTF-8",mb_detect_encoding($string,$codeList)); の部分が正しく変換されているかということと、次の $cake_price_all=$e->find('table[summary='.$string.']'); の検索部分がうまく機能していないということです。 問題の切り分けはこんなところです。

すると、全ての回答が全文表示されます。

関連するQ&A