可以用strstr()来查找一个句子中的两个单独的关键词吗?
可以用strstr()来查找一个句子中的两个单独的关键词吗?可以用strstr()来查找一个句子中的两个单独的关键词吗?
例如:
$sentence = 'the quick brown fox';
if (strstr($sentence, 'brown') && strstr($sentence, 'fox')) {
echo 'YES';
} else {
echo 'NO';
}
这取决于你使用它什么。从它的外观你应该使用strpos
,而不是strstr
。
并使用!== false – nathanjosiah 2012-04-06 22:09:50
太多'=':p'!== false'。 – 2012-04-06 22:10:10
:)它已被更正 – nathanjosiah 2012-04-06 22:11:02
是的,它可以...脚本您有关于将返回YES
..总是因为strstr
用来查找字符串的首次出现和其作品的独立于其他声明..它能够找到brown
和fox
在2个不同第一次出现的情况下
他们是如何工作的
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;
}
我希望这有助于
您能够推荐一个更好的方法?我还是相当新的PHP,所以我依赖于我一直在读的东西(这并不总是最好的方法:(笑) – 2012-04-06 22:22:41
大声笑..好吧我会更新我的答案与一些methosd,但它取决于您的使用情况 – Baba 2012-04-06 22:28:14
它肯定会。谢谢!:-D – 2012-04-06 23:25:05
你尝试了吗? – 2012-04-06 22:08:26
我一直在使用stristr()(我正在阅读的书中推荐使用它来查找字符串中的字符串)。它可以很好地定位单个词语的出现,但我不确定它是否正在查找多个词语。 – 2012-04-06 22:13:02