我正在建立一个搜索网站,用户可以通过我的桌面查找内容。
搜索效果很好,但我希望能够允许用户使用Google或Bing结果进行搜索。我希望人们通过在查询后指示/来确定他们想要使用特定的搜索引擎。
例如,搜索 something / google 会将搜索结果发送给Google。同样对于Bing。
答案 0 :(得分:2)
您可以使用正则表达式来提取查询字符串的这些部分。 e.g。
preg_match_all('(?=^|\s)/[a-z]+\b', $query, $matches)
将提取所有以斜杠开头并且后跟查询中的一个或多个字母的标记。然后,您可以通读这些令牌,并决定对每个令牌采取什么行动。
这个正则表达式解决方案非常强大,因为它应该允许这些(空格分隔的)标记出现在查询字符串中的任何位置,甚至在查询字符串中包含多个标记。
您可能还希望使用preg_replace(...)
从查询中删除这些令牌,以便您可以处理其余的搜索文本。
答案 1 :(得分:2)
如果您正在寻找Google和Bing,或者少量搜索引擎,您可以尝试:
if (strpos('/google',$_GET['q']) !== false) {
header('Location: http://www.google.com/q='.str_replace('/google','',$q).'+site:example.com');
exit;
} else if (strpos('/bing',$_GET['q']) !== false) {
header('Location: http://www.bing.com/search?q='.str_replace('/bing','',$q).'+site:example.com');
exit;
}
注意,在将任何文本输出到PHP的输出缓冲区之前,需要将其添加到页面中(由于header()函数调用)。这意味着,在PHP被指示向页面写入任何内容之前。否则,您将在PHP页面上收到错误。
答案 2 :(得分:0)
使用preg_match检查/search_engine
的搜索字符串的最后部分。
如果存在,则将其重定向到
http://www.google.com/search?q=site%3Adomain.com+search+string