2012-04-06 75 views
0

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

例如:

$sentence = 'the quick brown fox'; 

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

你尝试了吗? – 2012-04-06 22:08:26

+0

我一直在使用stristr()(我正在阅读的书中推荐使用它来查找字符串中的字符串)。它可以很好地定位单个词语的出现,但我不确定它是否正在查找多个词语。 – 2012-04-06 22:13:02

回答

1

这取决于你使用它什么。从它的外观你应该使用strpos,而不是strstr

+2

并使用!== false – nathanjosiah 2012-04-06 22:09:50

+0

太多'=':p'!== false'。 – 2012-04-06 22:10:10

+0

:)它已被更正 – nathanjosiah 2012-04-06 22:11:02

1

是的,它可以...脚本您有关于将返回YES ..总是因为strstr用来查找字符串的首次出现和其作品的独立于其他声明..它能够找到brownfox在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_matchhttp://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; 
} 

我希望这有助于

+0

您能够推荐一个更好的方法?我还是相当新的PHP,所以我依赖于我一直在读的东西(这并不总是最好的方法:(笑) – 2012-04-06 22:22:41

+0

大声笑..好吧我会更新我的答案与一些methosd,但它取决于您的使用情况 – Baba 2012-04-06 22:28:14

+0

它肯定会。谢谢!:-D – 2012-04-06 23:25:05

相关问题