繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM