私はstackoverflowでこの例を見つけました:
if (strpos($a,'are') !== false) {
echo 'true';
}
しかし、どうすれば2つの単語を検索できるようになりますか。次のようなものが必要です。$aに「are」または「be」という単語が含まれている場合、または両方がecho「contains」である場合。
xorと||を試しました
両方の単語を別々にチェックし、boolean or
-operatorを使用して、一方または両方が$a
:に含まれているかどうかをチェックします。
if (strpos($a,'are') !== false || strpos($a,'be') !== false) {
echo "contains";
}
or
-operatorが原因で、「are」を含む最初のチェックがすでに表示されている場合、2番目のチェック(「be」の場合)は実行されないことに注意してください$a
。
すべての strpos 回答から回答を選択していないため (ほとんどは 2 つの単語だけで機能するはずです。単語の制限を超えるこの関数を試してください。長い文字列からさまざまな長さの単語を見つけることができます (ただし、は strpos を使用しません. strpos を使用すると, 使用する || の数を決定するために単語の数を知る必要があると思います.またはループを使用する必要があります.このメソッドはそれをすべて排除し、コードを再利用するためのより柔軟な方法. コードは柔軟で、再利用可能で、動的であるべきだと思います. テストして、あなたが望むように動作するかどうかを確認してください!
function findwords($words, $search) {
$words_array = explode(" ", trim($words));
//$word_length = count($words_array);
$search_array = explode(" ", $search);
$search_length = count($search_array);
$mix_array = array_intersect($words_array, $search_array);
$mix_length = count($mix_array);
if ($mix_length == $search_length) {
return true;
} else {
return false;
}
}
//Usage and Examples
$words = "This is a long string";
$search = "is a";
findwords($words, $search);
// $search = "is a"; // returns true
// $search = "is long at"; // returns false
// $search = "long"; // returns true
// $search = "longer"; // returns false
// $search = "is long a"; // returns true
// $search = "this string"; // returns false - case sensitive
// $search = "This string"; // returns true - case sensitive
// $search = "This is a long string"; // returns true
$a = 'how are be';
if (strpos($a,'are') !== false || strpos($a,'be') !== false) {
echo 'contains';
}
試す:
if (strpos($a,'are') !== false || strpos($a,'be') !== false)
echo 'what you want';
if ((strpos($a,'are') !== false) || (strpos($a, 'be') !==false) {
echo 'contains';
}
これは、あなたの望むことですか?
if ((strpos($a,'are') !== false) || (strpos($a,'be') !== false)) {
echo 'contains';
}
if (strpos($a,'are') !== false || strpost($a, 'be') !== false) {
echo "contains";
}
Brain Candy:最初のものがtrueを返す場合、2番目のチェックをスキップします。したがって、両方が当てはまる可能性があります。最初のものが偽の場合にのみ、2番目のものをチェックします。これは短絡と呼ばれます。
if(strstr($a,'are') || strstr($a,'be')) echo 'contains';
ふむ、こんな感じ?
if (strpos($a,'are') || strpos($a, 'be') {
echo 'contains';
}