リファラーで、検索エンジンからの文字取得を考える。LPOというわけではないけど、、、

リファラーで、検索エンジンからの文字取得を考える。
LPOというわけではないけど、、、

google



http://www.google.co.jp/search?hl=ja&q=%E3%81%8C%E3%82%93%E3%81%B0&lr=&aq=f&oq=
qが検索文字パラメータ
$regx = '/[&\\?]q=([^&]*)/';

○yahoo



http://search.yahoo.co.jp/search?p=%E3%81%8C%E3%82%93%E3%81%B0&search.x=1&fr=top_ga1_sa&...
pが検索文字パラメータ
$regx = '/[&\\?]p=([^&]*)/';

Live search



http://search.live.com/results.aspx?q=%E3%81%8C%E3%82%93%E3%81%B0&form=QBLH
qが検索文字パラメータ
$regx = '/[&\\?]q=([^&]*)/';


この正規表現で文字パラメータの文字を取得しようとする。



function getRefWord ( $regx, $url, $toEncode ) {

$keyword = '';
preg_match( $regx, $url, $match );
if ( $match[1] ) {
$keyword = urldecode( $match[1] );
}

if ( strlen( $keyword ) > 0 ) {
// エンコード
$encode = mb_detect_encoding( $keyword );
$keyword = mb_convert_encoding( $keyword, $toEncode, $encode);
}

return $keyword;
}

で、使うところ。こんな感じではないかと思う。



$regxs = array( '/[&\\?]q=([^&]*)/', '/[&\\?]p=([^&]*)/' );
$url = $_SERVER['HTTP_REFERER'];

for ( $i = 0; $i < count( $regxs ); $i++ ) {
$kwd = getRefWord ( $regxs[$i], $url, "UTF-8" );
if ( strlen( $kwd ) > 0 ) {
break;
}
}

検索文字取得だけならば、案外と簡単に取得できそう。(これ動かしてませんが)
取得した文字から、何かしらのページ誘導を行おうとするとなると、またいろいろと情報を探らなければならないかと思いますが?
キーワードに関連情報がリンクされるようなデータベースでも作ろうかな?