即時消息從谷歌請求的網址尋找搜索字詞。 即時通訊使用php正則表達式的問題匹配在谷歌searchterms在網址
preg_match("/[q=](.*?)[&]/", $requesturl, $match);
但是當「Q」參數是字符串的最後一個參數失敗。
,所以我需要獲取後「Q =」在於這一切,但是比賽必須停止,如果它發現「&」
如何做到這一點?
編輯: 我最終降落在這個匹配谷歌請求網址: /[?因爲有時他們有一個以q結尾的參數。像 '水性= 0'
即時消息從谷歌請求的網址尋找搜索字詞。 即時通訊使用php正則表達式的問題匹配在谷歌searchterms在網址
preg_match("/[q=](.*?)[&]/", $requesturl, $match);
但是當「Q」參數是字符串的最後一個參數失敗。
,所以我需要獲取後「Q =」在於這一切,但是比賽必須停止,如果它發現「&」
如何做到這一點?
編輯: 我最終降落在這個匹配谷歌請求網址: /[?因爲有時他們有一個以q結尾的參數。像 '水性= 0'
您需要/q=([^&]+)/
。訣竅是匹配查詢中除&
之外的所有內容。
若要建立您的查詢,這是一個稍微修改後的版本,將(幾乎)做到這一點,它是最接近你在那裏:/q=(.*?)(&|$)/
。它將q=
置於括號之外,因爲在括號內,它將匹配或者其中的一個,而不是兩個在一起,並且最後您需要匹配&
或字符串結尾($
)。但有一些問題:
&
;你不需要它。要解決此問題,您可以使用lookahead查詢:(?=&|$)
所以,如果你想有一個稍長查詢擴展你有什麼就有什麼,那就是:/q=(.*?)(?=&|$)/
試試這個:
preg_match("/q=([^&]+)/", $requesturl, $match);
一點解釋:
[q=]
將搜索要麼q
或=
,卻接連而不是一個。[&]
不需要,因爲只有一個字符。 &
很好。?
運算符在正則表達式中指示它匹配0或1發生**之前的**字符。[^&]
會告訴它匹配任何字符除了爲&
。這意味着你會得到所有的查詢字符串,直到它遇到&。
+1張貼正確的之前,我有機會改正我的:) –
它不匹配它對我來說:/ 這裏是一個字符串,它應該匹配: 'http://www.google.no/url?sa=t&source=web&cd=3&sqi=2&ved=0CHMQFjAC&url=http%3A%2F%2Fwww.iphonedeksler 。沒有%2Fiphone -4- deksel%2F&RCT = J&q = deksel%20til%20iphone%204&EI = eMVOTpDfBI7DtAaA4cTLBw&USG = AFQjCNEJ2ZqJdBeUw4DcgETEPr0z3z18NA' 和另一它應該匹配: 'http://www.google.no/url?sa=t&source=幅和CD = 3&SQI = 2&VED = 0CHMQF jAC&url = http%3A%2F%2Fwww.iphonedeksler.no%2Fiphone-4-deksel%2F&rct = j && ei = eMVOTpDfBI7DtAaA4cTLBw&usg = AFQjCNEJ2ZqJdBeUw4DcgETEPr0z3z18NA&q = deksel%20til%20iphone%204' ..但這個線程到目前爲止沒有任何東西匹配。 –
@Kristian Rafteseth很奇怪,它在我的正則表達式http://gskinner.com/RegExr/中工作。它應該與preg_match一起工作,我會在鍵盤上嘗試它。 –