<?php

function masktoreg($mask, $last = true, $isfilemask = true)
    {
        if (!empty($mask) && $mask{0} == '/') return $mask; // это уже регулярка
        if($isfilemask){
            $star='[^:/\\\\\\\\]';//
            $mask=explode('|',$mask);
        } else {
            $star='.';//
            $mask=array($mask);
        }
        /* so create mask */
        $regs = array(
            '~\[~' => '@@0@@',
            '~\]~' => '@@1@@',
            '~[\\\\/]~' => '@@2@@',
            '/\*\*+/' => '@@3@@',
            '/\./' => '\.',
            '/\|/' => '\|',
            '/\*/' => $star . '*',
            '/\?/' => $star,
            '/#/' => '\#',
            '/@@3@@/' => '.*',
            '/@@2@@/' => '[\/\\\\\\\\]',
            '/@@1@@/' => '\]',
            '/@@0@@/' => '\[',
        );
        $r=array();
        foreach($mask as $m)
            $r[]=preg_replace(
                    array_keys($regs), array_values($regs), $m
                ) . ($last ? '$' : '');
        return '#' . implode('|',$r). '#iu';
    }
    
$files=[
  'd:\\windows\\system\\drivers\\ets\\host',	
  'd:\\windows\\system\\drivers\\ets\\host.',
  '/usr/local/bin/php/php.ini',
]  ;
$mask=[
   '*',
   '*.*',
   '*.ini|*.?',
];

foreach($files as $f){
	echo "\n";
	foreach($mask as $m ){
		echo $f.'>'.$m.'>>'.masktoreg($m).'='.(preg_match(masktoreg($m),$f)?'yes':'no')."\n";
	}
}