如何查找和识别字符串的特定部分?

时间:2011-02-23 01:23:03

标签: php mysql search bing

我正在建立一个搜索网站,用户可以通过我的桌面查找内容。

搜索效果很好,但我希望能够允许用户使用Google或Bing结果进行搜索。我希望人们通过在查询后指示/来确定他们想要使用特定的搜索引擎。

例如,搜索 something / google 会将搜索结果发送给Google。同样对于Bing。

3 个答案:

答案 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