【问题标题】:How to find and identify a specific part of a string?如何查找和识别字符串的特定部分?
【发布时间】:2011-07-02 10:40:22
【问题描述】:

我正在创建一个搜索网站,用户可以在其中找到我的桌子的东西。

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

例如,搜索 something /google 会将搜索发送到 Google。必应也是如此。

【问题讨论】:

标签: php mysql search bing


【解决方案1】:

您可以使用正则表达式来提取查询字符串的这些部分。例如

preg_match_all('(?=^|\s)/[a-z]+\b', $query, $matches)

将从您的查询中提取所有以斜杠开头并后跟一个或多个字母的标记。然后,您可以通读这些令牌并决定对每个令牌采取什么行动。

这个正则表达式解决方案很健壮,因为它应该允许这些(空格分隔的)标记出现在查询字符串中的任何位置,甚至可以在查询字符串中包含多个标记。

您可能还想使用preg_replace(...) 从查询中去除这些标记,以便您可以处理其余的搜索文本。

【讨论】:

    【解决方案2】:

    使用 preg_match 检查搜索字符串的最后一部分是否为/search_engine

    如果存在则将它们重定向到

    http://www.google.com/search?q=site%3Adomain.com+search+string

    【讨论】:

    【解决方案3】:

    如果您正在寻找 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 页面会出现错误。

    【讨论】:

    • 抱歉,我在其中一个 q 之后有一个额外的“示例”,我忘记更改 Bing str_replace 中的标志。
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多