正则表达式检测搜索引擎和搜索单词

时间:2009-12-26 17:36:17

标签: regex search-engine

我需要检测引用我网站的搜索引擎。由于每个搜索引擎都有不同的查询字符串用于搜索(例如,谷歌使用'q =',雅虎使用'p =')我使用网址正则表达式模式为搜索引擎创建了一个数据库。

举个例子: http://www.google.com/search?q=blabla&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-GB:official&client=firefox-a

我为谷歌创建的正则表达式是:

(http:)(\\/)(\\/)(www)(\\.)(google)(\\.).*(\\/)(search).*(&q=|\\?q=).*

(我是正则表达式的新手,但到目前为止它有效)

这会检测到该网址属于Google。 我的问题是我需要从上面的url或其他搜索引擎中提取搜索词。但我不知道如何将它与正则表达式相匹配。我尝试使用PHP函数从url中提取查询字符串,并将其与模式匹配,但它没有返回任何内容。

希望我能够解释清楚这一点。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我会使用parse_url来解析网址,使用parse_str来解析网址查询。

$url = 'http://www.google.com/search?q=blabla&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu%3Aen-GB%3Aofficial&client=firefox-a';
$parts = parse_url($url);
if (isset($parts['query'])) {
    parse_str($parts['query'], $parts['query']);
}
var_dump($parts);

答案 1 :(得分:2)

blog entry about extracting keywords from the referrer似乎很适合解决您的问题。

我发现它使用此search for 'extract query string from google referer url'。搜索似乎有一些有用的点击...我只是扫描了前几个。