アクセスログのrefererからキーワードを抽出するメモです。
とりあえずヤフーとグーグルだけ。
// $refererにリファラが入っているとして…
if (strpos($referer, "www.google.co.jp/search") !== false) {
// Google
ereg("[?&]q=([^&]+)", $referer, $tmp);
// もしかしたら文字コード変換もしなきゃかも
} elseif (strpos($referer, "search.yahoo.co.jp")) {
// Yahoo
ereg("[?&]p=([^&]+)", $referer, $tmp);
// 検索クエリーのエンコーディングを取得
ereg("[?&]ei=([^&]+)", $referer, $encoding);
if ($encoding[1] != "UTF-8") {
// 文字コードがUTF-8以外なら、UTF-8に変換(urldecode⇒mb_convert_encoding⇒urlencode)
$tmpKeyword = mb_convert_encoding(urldecode($tmp[1]), "UTF-8", $encoding[1]);
$tmp[1] = urlencode($tmpKeyword);
}
}
というような感じでやってますが、もしかしたらまだ穴があるかもしれません。
また、もっと効率のいい方法もあると思います。もしご教示頂ける方がいらっしゃいましたら、コメント欄やトラックバックで教えていただけるととっても嬉しいです。
【注意事項】
- Googleの方はエンコードの変換処理を入れなくても(とりあえず僕が持っているログでは)問題が無いので、入れてません。
- ちなみに他の検索エンジンからの訪問は、全て合わせて5%程度なので、うちでは無視してます。(検索キーワードの抽出において)