如果string包含某个单词而且只包含该单词

时间:2013-05-15 14:55:40

标签: php string

我试图阻止用户使用产生太多结果的术语进行搜索。

例如,我希望用户能够搜索"Big Island",但不能搜索"Island"

我试过了:

$array = array("island", "islands", "island's", "islet", "ilsets", "reef", "reefs", "shoal", "shoals");

if (0 < count(array_intersect(array_map('strtolower', explode(' ', $searchTerm)), $array)))
{
    echo "No results. The search term used was too general.";
    exit();
}

但是这会停止搜索任何带有停用词的短语。

我想我正在寻找类似的东西:

如果字符串包含这个单词或那个单词(并且只有其中一个单词!)停止你正在做的事情,那么继续......

5 个答案:

答案 0 :(得分:0)

查看它可能对你有帮助的strstr函数http://php.net/manual/en/function.strstr.php

答案 1 :(得分:0)

在删除“停止词”之后可能会查看搜索,这些词是“the”和“等”。所以删除“停用词”,然后检查搜索字符串是否为空。另外,请务必将其他单词添加到停用词列表中。

答案 2 :(得分:0)

尝试查看in_array()

这样你就可以说

if (in_array($searchterm,$array))
{
  // stop searching
}

答案 3 :(得分:0)

为什么不尝试使用正则表达式 - 这是一个简单的演示。您当然可以从预定义数组生成字符组(大|小)等

$regex =  '/^(big|small)\s+(Island|islet|reef)$/';
    if ( 1 === preg_match($regex, 'big reef ') {...}

答案 4 :(得分:0)

也许让用户搜索然后在Google上显示“相关搜索”...