可以使用strstr()在句子中查找2个单独的关键词吗?
例如:
$sentence = 'the quick brown fox';
if (strstr($sentence, 'brown') && strstr($sentence, 'fox')) {
echo 'YES';
} else {
echo 'NO';
}
答案 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;
}
我希望这会有所帮助