![](/img/trans.png)
[英]Is there a regular expression to strip specific query variables from a URI?
[英]Regular Expression to Detect a Specific Query
我想知道是否有人可以構造一個正則表達式來檢測某人是否搜索“ site:cnn.com”或“ site:www.globe.com.ph/”之類的東西。 我一直在最困難的時間來解決它。 在此先多謝!
編輯:抱歉忘了提及我的腳本在PHP中。
好的,要輸入任意文本字段,可以使用以下簡單的方法:
\bsite:(\S+)
括號將捕獲他們嘗試搜索的任何站點/域。 它不會驗證它是有效的,但驗證網址/域名是復雜的,有許多容易googlable正則表達式做這件事,例如,有一個在這里 。
您要匹配什么? 引薦來源網址?
假設您要匹配如下所示的引薦來源網址:
http://www.google.com/search?client=safari&rls=en-us&q=whatever+site:foo.com&ie=UTF-8&oe=UTF-8
這樣的正則表達式可以解決問題:
\bsite(?:\:|%3[aA])(?:(?!(?:%20|\+|&|$)).)+
筆記:
不,這不是引薦來源網址。 我的PHP腳本基本上吐出了有關域的信息(例如,反向鏈接,pagerank等),我需要該正則表達式,以便它知道用戶在搜索什么。 如果用戶輸入的內容與正則表達式不匹配,則會進行常規的網絡搜索。
如果這是您要嘗試的全部操作,那么我想我會采用更簡單的方法,然后執行以下操作:
$entry = $_REQUEST['q'];
$tokens = split(':', trim($entry));
if (1 < count($tokens) && strtolower($tokens[0]) == 'site')
$site = $tokens[1];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.