array_filter()
, с функцией фильтрации обратного вызова, основанной на stripos()
, должны помочь.
Например, если входные данные хранятся в $input
, а ваш массив в $data
:
$input = 'bl';
$data = array('orange', 'blue', 'green', 'red', 'pink', 'brown', 'black');
Фильтрация для сохранения только тех слов, которые содержат $input
(независимо от того, где в строке) может быть сделано следующим образом:
$result = array_filter($data, function ($item) use ($input) {
if (stripos($item, $input) !== false) {
return true;
}
return false;
});
var_dump($result);
И здесь вы получите:
array
1 => string 'blue' (length=4)
6 => string 'black' (length=5)
Изменение фильтрациис помощью обратного вызова вы можете:
- Проверить, начинается ли строка с ввода, - проверить, является ли возвращаемое
stripos()
значение === 0
- Использовать чувствительную к регистру функцию сопоставлениявроде
strpos()