0

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

前任:

$sentence = 'the quick brown fox';

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

2 回答 2

1

是的,它可以...您拥有的脚本将返回YES..总是因为strstr用于查找字符串的第一次出现及其独立于其他声明的工作..它能够 在 2 个不同的第一次出现实例中找到brownANDfox

他们是如何工作的

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;
}

我希望这有帮助

于 2012-04-06T22:13:11.323 回答
1

这取决于您使用它的目的。从外观上看,您应该使用strpos,而不是strstr.

于 2012-04-06T22:08:47.720 回答