Как проверить несколько слов в строке? (возвращает true, есть хотя бы одно из этих слов)

У меня есть строка вроде этого:

$str = "it is a test"; 

Я хочу проверить это на эти слова: it , test . Я хочу, чтобы он возвращал true если есть хотя бы одно из этих слов в строке.

Вот что я сделал: (хотя это не работает)

 $keywords = array ('it', 'test'); if(strpos($str, $keywords) !== false){ echo 'true';} else echo 'false'; 

Как я могу это сделать?

просто проверяя использование preg_match , вы можете добавить много разных слов в шаблон, просто используйте разделитель | между словами

 $str = "it is a test"; if (preg_match("[it|test]", $str) === 1) { echo "it matches"; } 

Извините, я не знал, что вы имеете дело с другими языками, вы можете попробовать это

 $str = "你好 abc efg"; if (preg_match("/\b(你好|test)\b/u", $str) === 1) { echo "it matches"; } 

Я также должен упомянуть, что \b означает границу слова, поэтому она будет соответствовать только точным словам

Самый простой способ – использовать функцию взрыва , это выглядит так:

 $str = "it is a test"; // Remember your quotes! $keywords = array ('it', 'test'); $str_array = explode(" ", $str); $foundWords = []; foreach ($keywords as $key) { if (in_array($key, $str_array)) { $foundWords[] = $key; } } foreach($foundWords as $word) { print("Word '{$word}' was found in the string '{$str}'<br />"); } 

Это также функция печати

Это дало мне результат:

Слово «это» было найдено в строке «это тест»,
Word 'test' был найден в строке «это тест»,

Я думаю, что проблема с вашим кодом заключается в том, что он пытается сопоставить массив в целом с строкой, попробуйте сделать это внутри цикла foreach .

Другим способом может быть что-то вроде:

 $keywords = array ('it', 'test'); echo (strpos($srt, $keywords[0]) ? "true" : "false"); echo (strpos($srt, $keywords[1]) ? "true" : "false"); 

Я не уверен, извините, я ошибаюсь. Я думаю, что strpos не работает с массивами?

Стараться сделать:

 $array = ('it', 'test'); for($i=0;$i<$array.length;$i++){ 

//here the strpos Method but with $array[$i] }