Определите несколько игл с помощью stripos

Как я могу определить несколько игл и выполнять те же действия ниже. Я пытаюсь определить дополнительные ключевые слова, такие как числа, цифры и т. Д. … на данный момент мне нужно создать цикл дублирования if с незначительным изменением ключевого слова.

if (stripos($data, 'digits') !== false) { $arr = explode('+', $data); for ($i = 1; $i < count($arr); $i += 2) { $arr[$i] = preg_replace('/\d/', '', $arr[$i]); } $data = implode('+', $arr); } 

Создать функцию, которая проходит через массив?

 function check_matches ($data, $array_of_needles) { foreach ($array_of_needles as $needle) { if (stripos($data, $needle)!==FALSE) { return true; } } return false; } if (check_matches($data, $array_of_needles)) { //do the rest of your stuff } 

–edit добавила точку с запятой

 function strposa($haystack, $needles=array(), $offset=0) { $chr = array(); foreach($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } if(empty($chr)) return false; return min($chr); } 

Применение:

 $array = array('1','2','3','etc'); if (strposa($data, $array)) { $arr = explode('+', $data); for ($i = 1; $i < count($arr); $i += 2) { $arr[$i] = preg_replace('/\d/', '', $arr[$i]); } $data = implode('+', $arr); } else { echo 'false'; } 

функция взята из https://stackoverflow.com/a/9220624/1018682

Хотя предыдущие ответы верны, но я хотел бы добавить все возможные комбинации, например, вы можете передать иглу как массив или строку или целое число.
Для этого вы можете использовать следующий фрагмент.

 function strposAll($haystack, $needles){ if(!is_array($needle)) $needles = array($needles); // if the $needle is not an array, then put it in an array foreach($needles as $needle) if( strpos($haystack, $needle) !== False ) return true; return false; } 

Теперь вы можете использовать второй параметр как массив или строку или целое число, независимо от того, что вы хотите.