Я пытаюсь сделать фильтр слов в 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'; }
Каков правильный способ добавления нескольких слов для проверки?
Чтобы расширить свой текущий код, вы можете использовать массив целевых слов для поиска и использовать цикл:
$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'; }