0

strstr() を使用して、文内の 2 つの別個のキーワードを検索できますか?

元:

$sentence = 'the quick brown fox';

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

2 に答える 2

1

何に使うかによります。それを見るとstrpos、 ではなくを使用する必要がありますstrstr

于 2012-04-06T22:08:47.720 に答える
1

はい、できます...あなたが持っているスクリプトは戻りYESます..常にstrstr文字列の最初の出現を検索するために使用され、他の宣言とは無関係に機能します ..2つの異なる最初の出現インスタンスでbrownANDを見つけることができました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;
}

これが役立つことを願っています

于 2012-04-06T22:13:11.323 に答える