我正在创建一个搜索网站,用户可以在其中找到我的桌子的东西。
搜索效果很好,但我希望能够允许用户使用 Google 或 Bing 结果进行搜索。我希望人们通过在查询后指示 / 来确定他们想要使用特定的搜索引擎。
例如,搜索某事 /google会将搜索发送到 Google。对于必应也是如此。
您可以使用正则表达式来提取查询字符串的这些部分。例如
preg_match_all('(?=^|\s)/[a-z]+\b', $query, $matches)
将从您的查询中提取所有以斜杠开头并后跟一个或多个字母的标记。然后,您可以通读这些令牌并决定对每个令牌采取什么行动。
这个正则表达式解决方案是健壮的,因为它应该允许这些(空格分隔的)标记出现在查询字符串中的任何位置,甚至可以在查询字符串中包含多个标记。
然后,您可能还想使用preg_replace(...)
从查询中去除这些标记,以便您可以处理其余的搜索文本。
如果您正在寻找 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 页面上收到错误消息。
使用 preg_match 检查搜索字符串的最后一部分是否为/search_engine
.
如果存在,则将它们重定向到
http://www.google.com/search?q=site%3Adomain.com+search+string