ご覧いただきありがとうございます。
PHPのphpQueryを用いてwebスクレイピングツールを構築しています。
googleに検索対象ワードを投げて、返ってきたURLをphpQueryで解析するという方法です。
検索結果のaタグのテキストを取得すると下記のような文字化けしたものが返ってきます。
検索対象ワード → テラテイル
検索結果 → teratailyeeCzbvl·éGWjA̽ßÌQAvbgtH[
PHP
1//Ajaxを用いて実装しています。 2//phpQuery 3//取得したページの各項目をforeachで回して、aタグテキストを取得 4foreach ($doc["#res"]->find(".g") as $items) { 5 sleep(1); 6 $itemTitle = pq($items)->find("a")->text(); //aタグのテキスト 7 $jsonData['items'][] = ['title' => $itemTitle]; 8 } 9//この後、json_encodeで値を返す処理があります。
調べてみたところ、文字化け解決支援というサイトに辿り着きました。
検索結果の文字(teratailyeeCzbvl·éGWjA̽ßÌQAvbgtH[)を入力すると、意図した文字列に変換されました。
このサイトからUTF-8形式
のファイルをlatin-1 (ISO-8859-1)形式
の文字コードで参照しようとして文字化けを起こしているということがわかったのですが、この解決策として、utf8_encode
を使用すれば解決するかと思ったのですが、
PHP
1foreach ($doc["#res"]->find(".g") as $items) { 2 sleep(1); 3 $itemTitle = utf8_encode(pq($items)->find("a")->text()); //utf8_encode 4 $jsonData['items'][] = ['title' => $itemTitle]; 5 }
結果は、このようになってしまいました。
どのようにすれば、解決するのかご教授お願いしたいです。
リクエストやレスポンスのヘッダー情報等が必要でしたらその旨ご連絡いただければと思います。
何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/25 06:56