2012-01-15 10 views
0

最近、GoogleのURLの構造が異なるようです。だから、それらから参照キーワードを抽出することは難しいです。次に例を示します。リファラーURLからキーワードを抽出する

http://www.google.co.uk/search?q=jquery+post+output+46&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#pq=jquery+post+output+46&hl=en&cp=30&gs_id=1v&xhr=t&q=jquery+post+output+php+not+running&pf=p&sclient=psy-ab&client=firefox-a&hs=8N5&rls=org.mozilla:en-US%3Aofficial&source=hp&pbx=1&oq=jquery+post+output+php+not+run&aq=0w&aqi=q-w1&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=bdeb326aa44b07c5&biw=1280&bih=875

私が行った検索は、実際には「を実行していないjqueryのポスト出力PHP」だったので、最初の「Q =」は、完全な検索が含まれていません。 2番目の方法があります。私は常に最後の 'q ='を抽出するスクリプトを書いてみたいですが、GoogleのURLが常に完全な検索を最後に持っているかどうかはわかりません。誰もがこれについて何か経験がありました。

答えて

3

あなたは$strが指す文字列ですparse_url()parse_str()、およびurldecode()を使用して、これを実現することができます

$fragment = parse_url($str, PHP_URL_FRAGMENT); 
parse_str($fragment, $arr); 

$query = urldecode($arr['q']); // jquery post output php not running 
+0

感謝を!しかし、私はこれがどのように機能するか把握するのに苦労しています。私がprint_r $ arrを実行すると、URLに明らかに2つの 'q'変数があるように見えます。コードが何らかの形で 'q'部分を組み合わせていますか?説明は私がもっと学ぶのに役立ちます。 –

+0

@LucasScholten: 'parse_url'の2番目のパラメータは、URLのハッシュマーク('# ')の後ろにあるものだけを抽出します。したがって、1つの" q "が存在します。 Iスクリプト '場合の上部にこれを追加したような場合に –

+0

(strpos($ _ POST [ 'リファラー']、 "#")> 0) { \t $フラグメント=でもparse_url($ _ POST [ 'リファラー']、PHP_URL_FRAGMENT); } else { \t $ fragment = parse_url($ _ POST ['referrer']、PHP_URL_QUERY); } ' すべてのGoogle URLが断片化されているわけではないため –

関連する問題