Intereting Posts
<br> хранится в поле mysql, но нет разрыва строки, когда эхо Как исправить ошибку с xml2-config не найден при установке PHP из источников? Есть ли открытый код для создания «предварительного просмотра ссылок» и значков, например, в facebook? Laravel 5 / Lumen Request Header? Неустранимая ошибка: вызов неопределенной функции new_mysqli () в C: \ wamp \ www \ work \ conn.php в строке 8 PHP для iPad или другие решения PHP Fatal Error: превышено максимальное время выполнения Почему данные сеанса пусты в Symfony2 и как получить к нему доступ? Эффективное получение количества строк, возвращаемых SELECT-запросом, с предложением WHERE с использованием PDO Используйте регулярное выражение для извлечения целого из url в строке с php Как получить доступ к переменной memer a с символом Каков надлежащий способ защиты приложения CodeIgniter 2 с аутентификацией? Каков правильный формат соли blowfish с использованием склепа PHP? Сбросить цикл foreach в PHP для нескольких запусков я хочу получить сумму файлов в папке по php

String содержит любые элементы в массиве (без учета регистра)

Как я могу проверить, содержит ли $string какой-либо элемент, выраженный в массиве?

 $string = 'My nAmE is Tom.'; $array = array("name","tom"); if(contains($string,$array)) { // do something to say it contains } 

Есть идеи?

Solutions Collecting From Web of "String содержит любые элементы в массиве (без учета регистра)"

это то, что вы хотели? Я надеюсь, что код компилируется 🙂

 $string = 'My nAmE is Tom.'; $array = array("name","tom"); if(0 < count(array_intersect(array_map('strtolower', explode(' ', $string)), $array))) { //do sth } 

Я не думаю, что есть встроенная функция, которая будет обрабатывать то, что вы хотите. Однако вы можете легко написать функцию contains() :

 function contains($str, array $arr) { foreach($arr as $a) { if (stripos($str,$a) !== false) return true; } return false; } 

Используя принятый ответ:

 $string = 'My nAmE is Tom.'; $array = array("name","tom"); if(0 < count(array_intersect(array_map('strtolower', explode(' ', $string)), $array))) { //do sth } 

Просто обратите внимание, что оператор if может быть изменен на:

 if(0 < count(array_intersect(explode(' ', strtolower($string)), $array))) 

так как нет необходимости использовать array_map для применения strtolower к каждому элементу. вместо этого примените его к исходной строке.

Еще одно обходное решение для функции

 function contains($string, $array, $caseSensitive = true) { $stripedString = $caseSensitive ? str_replace($array, '', $string) : str_ireplace($array, '', $string); return strlen($stripedString) !== strlen($string); } 

PS. как для меня, я просто использую его без функции.

 if (strlen(str_replace($array, '', $string)) !== strlen($string)) { // do it } 

Что-то вроде этого будет работать:

 $string = 'My nAmE is Tom.'; $array = array("name", "tom"); foreach ($array as $token) { if (stristr($string, $token) !== FALSE) { print "String contains: $token\n"; } } 
 <?php $input = preg_quote('blu', '~'); // don't forget to quote input string! $data = array('orange', 'blue', 'green', 'red', 'pink', 'brown', 'black'); $result = preg_grep('~' . $input . '~', $data); print_r($result); ?> 

Будет ли это выполнять эту работу?

 $words = explode(" ", $string); $wordsInArray = array(); foreach($words as $word) { if(in_array($word, $array)) { $wordsInArray[] = $word; } } 
 function contains($str, $arr) { $ptn = ''; foreach ($arr as $s) { if ($ptn != '') $ptn .= '|'; $ptn .= preg_quote($s, '/'); } return preg_match("/$ptn/i", $str); } echo contains('My nAmE is Tom', array('name', 'tom')); 

Другой способ сделать с функцией array_intersect (), Попробуйте под кодом:

 function checkString(array $arr, $str) { $str = preg_replace( array('/[^ \w]+/', '/\s+/'), ' ', strtolower($str) ); // Remove Special Characters and extra spaces -or- convert to LowerCase $matchedString = array_intersect( explode(' ', $str), $arr); if ( count($matchedString) > 0 ) { return true; } return false; } 

Гораздо проще, пожалуйста, обратитесь к ссылке in_array

 $os = array("Mac", "NT", "Irix", "Linux"); if (in_array("Irix", $os)) { echo "Es Irix"; }