GoogleサジェストAPIの使い方と文字化けでハマったことのまとめ
GoogleサジェストAPIを使って、お恥ずかしながらちょっとハマった時のことを書きたいと思います。
需要ありますかね?
プログラミングやWordPressを習得するのに一番近道な方法とは?
目次
GoogleサジェストAPIの使い方
GoogleサジェストAPIのリクエストURLはこんな感じです。
■リクエストURL例
1 | http://www.google.com/complete/search?hl=ja&output=toolbar&q=オバマ |
ググったら色々なサイトで解説してくれていましたので特に疑問もなく上記のURLを元に開発。
■パラメータの説明
hl | 言語(jaとかenとかを入れる) |
---|---|
output | 「toolbar」と指定するとXMLで結果が返ってくる(現在はXML以外は取れない) |
q | キーワード |
■リクエスト検索結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <toplevel> <CompleteSuggestion> <suggestion data="オバマ"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="オバマケア"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="オバマ 宇宙人"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="オバマブログ"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="オバマケアとは"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="小浜市"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="小浜温泉"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="小浜線"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="小浜 観光"/> </CompleteSuggestion> <CompleteSuggestion> <suggestion data="小浜"/> </CompleteSuggestion> </toplevel> |
うん、良い感じ。
いざ実装、しかしなぜかうまく動かない
いざ実装してsimplexml_load_fileで取ろうとしてもなぜかうまく取れない。。。
なんで?
1 2 3 4 5 | $url = "http://www.google.com/complete/search?hl=ja&output=toolbar&q=".urlencode("オバマ"); $toplevel = simplexml_load_file($url); foreach ($toplevel->CompleteSuggestion as $completeSuggestion) { $suggest_word_array[] = $completeSuggestion->suggestion->attributes()->data; } |
調査するとどうやら検索結果が文字化けしている模様。
最初、simplexml_load_fileの方を疑ってしまってちょっと時間がかかったのは内緒。
文字化けには[ie],[oe]パラメータをつけよう
まさかの文字化け。
再度ググるとGoogleサジェストには他にもパラメータがあることが判明。
それは、
ieパラメータとoeパラメータ
の2つ。
Input Encoding,Output Encodingの略ですね。
このパラメータ両方にutf_8と入れて実装。
うまくいきました。
サンプルコード
1 2 3 4 5 | $url = "http://www.google.com/complete/search?hl=ja&output=toolbar&ie=utf_8&oe=utf_8&q=".urlencode("オバマ"); $toplevel = simplexml_load_file($url); foreach ($toplevel->CompleteSuggestion as $completeSuggestion) { $suggest_word_array[] = $completeSuggestion->suggestion->attributes()->data; } |
まとめ
GoogleサジェストAPIで日本語を使う時はie,oeパラメータを環境に合わせて設定しよう。
参考サイト
この記事は下記のサイトを参考にさせて頂きました。
ありがとうございます!
Google検索サービスを自分のアプリに組み込むときの注意点 | imomushi.com – memo
Google API プログラミング解説 | Crystal-Creation