Siempre puedes crearte tu función de filtrado manual. No es difícil pues solo tienes que recorrer el array e ir viendo qué elementos te quedas, una vez aplicados los criterios de búsqueda que requiera cada caso.
Por ejemplo aquí te dejo una función de filtrado en PHP que mira el contenido de los items del array, buscando apariciones de uno o más caracteres:
<?php
$provincias = ['Málaga', 'Valencia', 'Cádiz', 'Orense', 'Lugo', 'León', 'Toledo', 'Cuenca', 'Guadalajara', 'Jaén', 'Barcelona', 'Madrid'];
function arrayfilter($elements, $query) {
$found = [];
foreach($elements as $element) {
if(strpos($element, $query) !== false) {
array_push($found, $element);
}
}
return $found;
}
var_dump(arrayFilter($provincias, 'o'));
Esta función la puedes mejorar fácilmente para conseguir que el filtrado no tenga en cuenta las mayúsculas y las minúsculas, para que PHP pueda filtrar por ejemplo provincias que contienen "l" y te aparecan tanto Málaga ("l" minúscula) como León ("L" mayúscula).
<?php
$provincias = ['Málaga', 'Valencia', 'Cádiz', 'Orense', 'Lugo', 'León', 'Toledo', 'Cuenca', 'Guadalajara', 'Jaén', 'Barcelona', 'Madrid'];
function arrayfilter($elements, $query) {
$found = [];
$query = strtolower($query);
foreach($elements as $element) {
$current = strtolower($element);
if(strpos($current, $query) !== false) {
array_push($found, $element);
}
}
return $found;
}
var_dump(arrayFilter($provincias, 'l'));
Espero que haya servido de ayuda.