- 締切済み
他サイトからの値の取得
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]; これでは、エラーになります。 この日本語のワードで検索しなければならない場合の書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- muuming2001
- ベストアンサー率23% (202/847)
- muuming2001
- ベストアンサー率23% (202/847)
お礼
回答ありがとうございます。 日本語ではなく、代わりに「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); すると、エラーはでないものの、文字列が文字化けした状態で表示されます。ですので、文字コードが異なるもの同士で検索をかけているため、見つからないのではないか? 正しい文字コードで検索し、その結果を文字化けしない状態で表示させるには? というところで、行き詰まっています。