Try this one, supporting all filename matching facilities:
// MY_FNMATCH
function my_fnmatch($pattern, $file)
{
for($i=0; $i<strlen($pattern); $i++) {
if($pattern[$i] == "*") {
for($c=$i; $c<max(strlen($pattern), strlen($file)); $c++) {
if(my_fnmatch(substr($pattern, $i+1), substr($file, $c))) {
return true;
}
}
return false;
}
if($pattern[$i] == "[") {
$letter_set = array();
for($c=$i+1; $c<strlen($pattern); $c++) {
if($pattern[$c] != "]") {
array_push($letter_set, $pattern[$c]);
}
else break;
}
foreach ($letter_set as $letter) {
if(my_fnmatch($letter.substr($pattern, $c+1), substr($file, $i))) {
return true;
}
}
return false;
}
if($pattern[$i] == "?") {
continue;
}
if($pattern[$i] != $file[$i]) {
return false;
}
}
return true;
}