Googleからのキーワード検索して訪問したユーザに対し、記事をハイライトして表示する方法。
当初はparse_urlを利用したコードを書こうと思っていたのだが、Web Artisan Blogさんのページにあるように、想定外のエラーが起こる模様。
そこで、$HTMLに検索対象文字列が入ってる場合、以下のように記述。
< ?php
$host = $_SERVER['HTTP_REFERER'];
$host_p = parse_url($host);
if(stristr($host_p['host'], "google")){ //Googleからの訪問のみ実行
if(stristr($host, "q=")){ //qを取り出す
$word = preg_replace("/(.*)q=(.*)/", "$2", $host);
$word = explode("&", $word);
}
$search_text = $word[0];
}
if($search_text){
$str_text = urldecode($search_text);
$str_text = mb_ereg_replace(" ", " ", $str_text);
$str_text = explode(" ", $str_text);
$str_count = count($str_text);
for($i=0; $i<$str_count; $i++){
$HTML = str_replace($str_text[$i], "<span class="yellow">{$str_text[$i]}</span>", $HTML);
}
}
?>
parse_urlはホスト元の判断時のみに利用してます。stristrでgoogleの文字が入っている場合に処理を実行します。
次にq=以下を取り出しています。explodeでqから&までを配列として格納しています。
次に、キーワードをデコード後、全角スペースがある場合は半角に修正し、
半角スペースでexplodeしています。
これで、キーワードが分かれたはずです。
あとは$HTMLに検索文字列のみspan class="yellow"で囲む処理をしています。
最後に、スタイルシートで
.yellow{background-color:yellow;}
と指定すれば完了です。
[tmkm-amazon]4797346418[/tmkm-amazon]