2012-04-06 68 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

相關問題