2012-01-15 31 views
0

現在Google的網址結構有所不同。所以從它們中提取引用關鍵字更困難。這裏有一個例子:從引薦來源網址中提取關鍵字

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 =」不包含完整的搜索。第二個是。我想寫一個總是提取最後'q ='的腳本,但我不確定Google的URL是否總是最後一次搜索完整。任何人都有這方面的經驗。

回答

3

可以使用parse_url()parse_str()做到這一點,並urldecode(),其中$str是指字符串:

$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時,它看起來好像只有一個'q'變量,即使在URL中顯然是2.你的代碼是否以某種方式結合了'q'部分?一個解釋將幫助我學習更多。 – 2012-01-15 19:11:35

+0

@LucasScholten:'parse_url'中的第二個參數只提取URL中的哈希標記('#')後面的內容,因此只會有一個「q」。 – 2012-01-15 19:33:41

+0

在這種情況下,我已經在腳本 '如果(strpos($ _ POST [ '引薦'], 「#」)> 0) { \t $片段= parse_url($ _ POST ['引薦的頂部添加了此'],PHP_URL_FRAGMENT); } else { \t $ fragment = parse_url($ _ POST ['referrer'],PHP_URL_QUERY); }' 由於並非所有的Google網址都是分片 – 2012-01-15 19:49:35