在PHP字符串中检测高级布尔搜索运算符

时间:2012-10-02 03:21:45

标签: php

我网站的大多数用户都不熟悉如何正确使用高级搜索运算符。以下只是我在数据库中看到的一个例子:

薰衣草+烧伤+

而不是使用+薰衣草+烧伤

我正在尝试触发错误消息,以便他们可以正确学习如何进行高级搜索。当我们尝试在单个单词而不是短语周围使用引号时,我出现了错误。现在我正试图想出一个错误,当他们没有正确使用+时显示。我的代码可以检测是否有加号,但我只需要一些帮助来判断+是出现在单词前面还是之后。

3 个答案:

答案 0 :(得分:0)

这些方面应该做的事情:

if (preg_match('/\w\+/', $string)) {
    // a plus was found following a word
}

答案 1 :(得分:0)

查看上面的示例,您将感兴趣的是正则表达式运算符^$。它们匹配行的开头和结尾。例如,^+[a-zA-z]*符合您的要求,[a-zA-Z]*+$将与您的用户输入相匹配。

在此处阅读更多内容:http://www.regular-expressions.info/anchors.html

答案 2 :(得分:0)

你可以编写一个很好的正则表达式,但你可能想尝试这样简单的事情。

$queryArray = explode(' ', $rawQuery);
if (count($queryArray)) {
    if ('+' === $queryArray[0][0]) {
        // + is in front of first word in query
    }

    $lastWordInQuery = $queryArray[count($queryArray) - 1];
    if ('+' === $lastWordInQuery[strlen($lastWordInQuery) - 1]) {
        // + is at the end of last word in query
    }
}