[英]How to find and identify a specific part of a string?
我正在建立一个搜索网站,用户可以在其中查找桌子上的东西。
搜索效果很好,但我希望能够允许用户使用Google或Bing结果进行搜索。 我希望人们通过在查询后输入一个/来标识他们要使用特定的搜索引擎。
因此,例如,搜索某物/ google会将搜索结果发送给Google。 对于Bing同样如此。
您可以使用正则表达式提取查询字符串的这些部分。 例如
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.