可以使用strstr()来查找句子中的2个单独的关键词吗?

时间:2012-04-06 22:07:08

标签: php

可以使用strstr()在句子中查找2个单独的关键词吗?

例如:

$sentence = 'the quick brown fox';

if (strstr($sentence, 'brown') && strstr($sentence, 'fox')) {
   echo 'YES';
} else {
   echo 'NO';
}

2 个答案:

答案 0 :(得分:1)

这取决于你使用它的目的。看起来你应该使用strpos,而不是strstr

答案 1 :(得分:1)

是的,它可以......你所拥有的脚本将返回YES ..总是因为strstr用于查找字符串的第一个匹配项,并且它独立于其他声明而工作..它能够在2个不同的第一次出现的实例中找到brown AND fox

他们的工作方式

strstr($sentence, 'brown') // Returns 'brown fox' 
strstr($sentence, 'fox') // Returns 'fox' 

两个结果都是有效的字符串

如果您尝试

var_dump(strstr($sentence, 'fish')); // Returns false 

现在这不是检查字符串的有效方法,但它有自己的用途

文档:http://php.net/manual/en/function.strstr.php

编辑1

$sentence = 'the quick brown fox';
$keywords = array (
        'brown',
        'fox' 
);

echo "<pre>";

preg_match http://php.net/manual/en/function.preg-match.php

示例

$regex = '/(' . implode ( '|', $keywords ) . ')/i';

if (preg_match ( $regex, $sentence )) // Seach brown or fox
{
    echo "preg_match brown or fox" . PHP_EOL;
}

所有这将根据您的使用情况而有效

strpos() - 在astring

中查找第一次出现的子字符串的位置

stripos() - 查找字符串中第一次出现不区分大小写的子字符串的位置

strrpos() - 查找字符串中最后一次出现的子串的位置

strrchr() - 查找字符串中最后一个字符

示例

if (strpos ( $sentence, $keywords [0] ) || strpos ( $sentence, $keywords [1] )) {
    echo "strpos brown OR fox " . PHP_EOL;
}

if (strripos ( $sentence, $keywords [0] ) && strpos ( $sentence, $keywords [1] )) {
    echo "strpos brown AND fox " . PHP_EOL;
}

我希望这会有所帮助