Проверьте, содержит ли строка одно из нескольких слов

Я пытаюсь сделать фильтр слов в php, и я столкнулся с предыдущим сообщением Stackoverlow, в котором упоминается следующее, чтобы проверить, содержит ли строка определенные слова. То, что я хочу сделать, – это адаптировать это, чтобы он проверял разные слова за один раз, не повторяя код снова и снова.

$a = 'How are you ?'; if (strpos($a,'are') !== false) { echo 'true'; } 

Будет ли он работать, если я смогу кодировать код? ……

 $a = 'How are you ?'; if (strpos($a,'are' OR $a,'you' OR $a,'How') !== false) { echo 'true'; } 

Каков правильный способ добавления нескольких слов для проверки?

Related of "Проверьте, содержит ли строка одно из нескольких слов"

Чтобы расширить свой текущий код, вы можете использовать массив целевых слов для поиска и использовать цикл:

 $a = 'How are you ?'; $targets = array('How', 'are'); foreach($targets as $t) { if (strpos($a,$t) !== false) { echo 'one of the targets was found'; break; } } 

Имейте в виду, что использование strpos() таким образом означает, что могут быть найдены частичные совпадения слов. Например, если цель была ample в строке, here is an example тогда будет найдено совпадение, хотя по определению слово ample отсутствует.

Для целостного совпадения слов в документации preg_match() есть пример, который можно расширить, добавив цикл для нескольких целей:

 foreach($targets as $t) { if (preg_match("/\b" . $t . "\b/i", $a)) { echo "A match was found."; } else { echo "A match was not found."; } } 

Прочтите его где-нибудь:

 if(preg_match('[word1|word2]', $a)) { } 
 if (strpos($ro1['title'], $search)!==false or strpos($ro1['description'], $search)!== false or strpos($udetails['user_username'], $search)!== false) { //excute ur code } 

Если у вас есть фиксированное количество слов, которое не слишком велико, вы можете легко сделать это так:

 $a = 'How are you ?'; if (strpos($a,'are') !== false || strpos($a,'you') !== false || strpos($a,'How') !== false) { echo 'true'; }