[英]php regex question for matching google searchterms in url
即時通訊從谷歌的請求URL中找到搜索詞。 我正在使用
preg_match("/[q=](.*?)[&]/", $requesturl, $match);
但是當“ q”參數是字符串的最后一個參數時,它將失敗。
所以我需要獲取'q ='之后的所有內容,但是如果找到'&',則匹配必須停止
怎么做?
編輯:我最終為匹配Google請求的網址而着陸:/ [?&] q =([^&] +)/因為有時它們的參數以q結尾。 就像“ aq = 0”
您需要/q=([^&]+)/
。 訣竅是匹配查詢中&
以外的所有內容。
為了構建您的查詢,這是一個經過稍加修改的版本,幾乎可以完成所有操作,並且與您所擁有的版本最接近:/ /q=(.*?)(&|$)/
.*?)(&| /q=(.*?)(&|$)/
。 它把q=
出來的括號之內,因為這將匹配他們的,而不是兩者一起的括號內,並在結束時,你需要匹配要么&
或字符串(結束$
)。 但是,這有一些問題:
&
; 你不需要它。 要解決此問題,您可以使用前瞻查詢: (?=&|$)
因此,如果您希望稍長一點的查詢來擴展那里的內容,則為:/ /q=(.*?)(?=&|$)/
(?= /q=(.*?)(?=&|$)/
嘗試這個:
preg_match("/q=([^&]+)/", $requesturl, $match);
一些解釋:
[q=]
將搜索要么 q
或=
,但經過另一個不是一個。 [&]
,因為只有一個字符。 &
很好。 ?
正則表達式中的運算符告訴它匹配0或1次出現的**前面**字符。 [^&]
會告訴它匹配&
以外的任何字符。 這意味着您將獲得所有查詢字符串,直到命中&為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.