人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPに詳しい方にお聞きします。
リファラが検索エンジンからだったら、
なんというキーワードからなのかを取得して表示させようと思っています。
そういったサンプルがあったら教えていただきたいのですが、自分が調べた中では見つかりませんでした。
なので、自分で作ろうと思っています。、
リファラがhttp://linkmoto.xxx/xxx.php?kw=hoge&p=hoge2&a=hoge3
となっている場合にこのURLから
kw=のhogeの部分だけを取得する方法はありませんでしょうか?
検索エンジンのURLは何パターンかあるのでURLを解析するのではなく
単純に
kwはhoge
pはhoge2
aはhoge3
というのを取得したいです。

●質問者: kamesann
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge PHP URL キーワード パターン
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Mook
●23ポイント

こういうことでしょうか。

<?
 foreach ( $_GET as $key => $dat ) {
 print $key. "は" . $dat ."<br>\n";
 }
?>

2 ● technolize
●23ポイント

<?php
$u = parse_url("http://example.com/sample.php?kw=hoge&p=hoge2&a=hoge3&qu...);
$p = explode('&', $u['query']);
$params = array();
foreach ( $p as $v ) {
list($key, $param) = explode('=', $v);
$params[$key] = $param;
}
print $params['kw'];
var_dump($params);
?>

普通にやるとこんな感じでしょうか。

parse_url() で QUERY_STRING を抜き出して、それを順にバラしていって連想配列にするコードです。

フリーで配布しているアクセス解析プログラムが参考になるんじゃないでしょうか。


3 ● nandedarou
●22ポイント

http://au3.php.net/manual/ja/function.mb-parse-str.php

$Ref = split("\?",$_SERVER["HTTP_REFERER"]);

// $Qに連想配列として格納されます
mb_parse_str($Ref[1], $Q);

// 表示
print_r( $Q );

いかがでしょうか?


4 ● nandedarou
●22ポイント

もろ、お探しの方法だと思います。

ちょっと説明が足りなかったかもしれませんので、詳しく解説します。もし、疑問があれば、コメント下さい。さらに、詳しく解説します。

// リファラを?で分けて、配列$Refに保存
// $Ref[0]は、?より前、
// $Ref[1]が、?より後(つまり、クエリ文字列)
$Ref = split("\?",$_SERVER["HTTP_REFERER"]);

// mb_parse_strは、もろ、クエリ文字列を分析する為の関数です。
// $Qに連想配列として格納されます
mb_parse_str($Ref[1], $Q);

// 連想配列を表示する
// 次のように表示されます。
// kwはhoge
// pはhoge2
// aはhoge3
foreach( $Q as $key => $value ){
  print( $key . "は、" . $value . "<br />" );
}

http://au3.php.net/manual/ja/function.mb-parse-str.php

◎質問者からの返答

おお、すばらしい、詳しくありがとうございます。

mb_parse_str使用させていただきます。

これで効率良く組めそうです

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ