- ベストアンサー
PHP初心者のための検索結果取得コード
- このコードは、PHP初心者のためにGoogle検索の結果を取得するためのものです。
- 指定されたキーワードを元に、Googleの検索APIを叩いて結果を取得し、オブジェクトとして表示します。
- このコードは、PHPの基礎的な文法を使っていますので、PHP初心者でも理解しやすいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q= という検索APIのURLはGoogleから提供されているもので、固定です。「q=」の後ろに検索したいキーワードを設定しますが、これはURLエンコード(パーセントエンコード)する必要があります。PHPに限らず、URLを扱う際の決まり事です。 Wikipedia - パーセントエンコーディング http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%BB%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0 ↑このURLだってそうですよね。Chromeなどのブラウザで見ると 「ja.wikipedia.org/wiki/パーセントエンコーディング」と表示されると思いますが、それはブラウザが気を利かして読みやすくしてくれているだけで、実際はこうなっています。 URLエンコードの役割を担うPHPの関数が urlencode() です。 PHP Manual - urlencode http://php.net/manual/ja/function.urlencode.php URLやファイルにアクセスして内容を文字列として取得してくれる関数が file_get_contents() です。 PHP Manual - file_get_contents http://php.net/manual/ja/function.file-get-contents.php このAPIによって取得できる文字列は「JSON」という形式になっています。 Wikipedia - JavaScript Object Notation http://ja.wikipedia.org/wiki/JavaScript_Object_Notation これを解析してオブジェクト化してくれる関数が json_decode() です。オブジェクトが分かりにくいようであれば、第2引数に True を渡すことで連想配列にすることも出来ます。 PHP Manual - json_decode http://php.net/manual/ja/function.json-decode.php この先は単に表示を行っているだけですが… var_dump() の結果はHTMLソース上では見やすいですが、HTML上だと<br />ではなく単に改行コードでしか改行が行われていないので、1行で表示されて非常に見にくいですよね。デフォルトだと Content-Type: text/html という指示がブラウザに送られ、エンコーディング不明なHTMLとして解釈されますが、ここでは Content-Type: text/plain; charset=utf-8 という指示をブラウザに送り、HTMLソースを表示したときの挙動に強制的に変更し、同時に文字化けを防ぐために UTF-8 であることも示しています。 PHP Manual - header http://php.net/manual/ja/function.header.php PHP Manual - var_dump http://php.net/manual/ja/function.var-dump.php また質問するときに気を付けてほしいこととして… ・質問する前に該当する関数のマニュアルを読む(Googleで検索すればたいてい見つかります) ・どのあたりが分からないのかを明示する
お礼
大変詳しいご回答ありがとうございました。 >どのあたりが分からないのかを明示する ごもっともです。気をつけます。