<?php
function masktoreg($mask, $last = true, $isfilemask = true)
{
if (!empty($mask) && $mask{0} == '/') return $mask; // это уже регулярка if($isfilemask){
$star='[^:/\\\\\\\\]';//
} else {
$star='.';//
}
/* so create mask */
'~\[~' => '@@0@@',
'~\]~' => '@@1@@',
'~[\\\\/]~' => '@@2@@',
'/\*\*+/' => '@@3@@',
'/\./' => '\.',
'/\|/' => '\|',
'/\*/' => $star . '*',
'/\?/' => $star,
'/#/' => '\#',
'/@@3@@/' => '.*',
'/@@2@@/' => '[\/\\\\\\\\]',
'/@@1@@/' => '\]',
'/@@0@@/' => '\[',
);
foreach($mask as $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"; }
}
PD9waHAKCmZ1bmN0aW9uIG1hc2t0b3JlZygkbWFzaywgJGxhc3QgPSB0cnVlLCAkaXNmaWxlbWFzayA9IHRydWUpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkbWFzaykgJiYgJG1hc2t7MH0gPT0gJy8nKSByZXR1cm4gJG1hc2s7IC8vINGN0YLQviDRg9C20LUg0YDQtdCz0YPQu9GP0YDQutCwCiAgICAgICAgaWYoJGlzZmlsZW1hc2spewogICAgICAgICAgICAkc3Rhcj0nW146L1xcXFxcXFxcXSc7Ly8KICAgICAgICAgICAgJG1hc2s9ZXhwbG9kZSgnfCcsJG1hc2spOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzdGFyPScuJzsvLwogICAgICAgICAgICAkbWFzaz1hcnJheSgkbWFzayk7CiAgICAgICAgfQogICAgICAgIC8qIHNvIGNyZWF0ZSBtYXNrICovCiAgICAgICAgJHJlZ3MgPSBhcnJheSgKICAgICAgICAgICAgJ35cW34nID0+ICdAQDBAQCcsCiAgICAgICAgICAgICd+XF1+JyA9PiAnQEAxQEAnLAogICAgICAgICAgICAnfltcXFxcL11+JyA9PiAnQEAyQEAnLAogICAgICAgICAgICAnL1wqXCorLycgPT4gJ0BAM0BAJywKICAgICAgICAgICAgJy9cLi8nID0+ICdcLicsCiAgICAgICAgICAgICcvXHwvJyA9PiAnXHwnLAogICAgICAgICAgICAnL1wqLycgPT4gJHN0YXIgLiAnKicsCiAgICAgICAgICAgICcvXD8vJyA9PiAkc3RhciwKICAgICAgICAgICAgJy8jLycgPT4gJ1wjJywKICAgICAgICAgICAgJy9AQDNAQC8nID0+ICcuKicsCiAgICAgICAgICAgICcvQEAyQEAvJyA9PiAnW1wvXFxcXFxcXFxdJywKICAgICAgICAgICAgJy9AQDFAQC8nID0+ICdcXScsCiAgICAgICAgICAgICcvQEAwQEAvJyA9PiAnXFsnLAogICAgICAgICk7CiAgICAgICAgJHI9YXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRtYXNrIGFzICRtKQogICAgICAgICAgICAkcltdPXByZWdfcmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICBhcnJheV9rZXlzKCRyZWdzKSwgYXJyYXlfdmFsdWVzKCRyZWdzKSwgJG0KICAgICAgICAgICAgICAgICkgLiAoJGxhc3QgPyAnJCcgOiAnJyk7CiAgICAgICAgcmV0dXJuICcjJyAuIGltcGxvZGUoJ3wnLCRyKS4gJyNpdSc7CiAgICB9CiAgICAKJGZpbGVzPVsKICAnZDpcXHdpbmRvd3NcXHN5c3RlbVxcZHJpdmVyc1xcZXRzXFxob3N0JywJCiAgJ2Q6XFx3aW5kb3dzXFxzeXN0ZW1cXGRyaXZlcnNcXGV0c1xcaG9zdC4nLAogICcvdXNyL2xvY2FsL2Jpbi9waHAvcGhwLmluaScsCl0gIDsKJG1hc2s9WwogICAnKicsCiAgICcqLionLAogICAnKi5pbml8Ki4/JywKXTsKCmZvcmVhY2goJGZpbGVzIGFzICRmKXsKCWVjaG8gIlxuIjsKCWZvcmVhY2goJG1hc2sgYXMgJG0gKXsKCQllY2hvICRmLic+Jy4kbS4nPj4nLm1hc2t0b3JlZygkbSkuJz0nLihwcmVnX21hdGNoKG1hc2t0b3JlZygkbSksJGYpPyd5ZXMnOidubycpLiJcbiI7Cgl9Cn0=