Вы можете использовать array_filter
, чтобы отфильтровать любые значения массива, которые не являются подстрокой $string
.Примечание. Я использовал stripos
для поиска без учета регистра, если вы хотите, чтобы поиск был чувствительным к регистру, просто используйте strpos
.
$array = array('pro', 'gram', 'merit', 'program', 'it', 'programmer');
$string = "programit";
print_r(array_filter($array, function ($v) use($string) { return stripos($string, $v) !== false; }));
Вывод:
array
(
[0] => pro
[1] => gram
[3] => program
[4] => it
)
Обновление
Вот рекурсивная функция, которая дает тот же результат.
function find_words($string, $array) {
if (count($array) == 0) return $array;
if (stripos($string, $array[0]) !== false)
return array_merge(array($array[0]), find_words($string, array_slice($array, 1)));
else
return find_words($string, array_slice($array, 1));
}
Демонстрация обоих методов на rextester