protected static function filterNames($filter, $names)
{
if ($filter !== null) {
$filtered = array();
$filter = (array) $filter;
foreach ($filter as $k => $f) {
$f = trim($f);
$filter[$k] = strtr($f, array('*' => '.*', '.' => '\\.', '\\' => '\\\\', '{' => '\\{', '}' => '\\}', '(' => '\\(', ')' => '\\)', '+' => '\\+', '^' => '\\^', '$' => '\\$'));
}
foreach ($names as $name) {
foreach ($filter as $f) {
if (preg_match('/^' . $f . '$/', $name)) {
$filtered[] = $name;
}
}
}
} else {
$filtered = $names;
}
return $filtered;
}