public static function glob_to_regex($glob)
{
$pattern = $glob;
// braces need more work
$braces = array();
if (preg_match_all('/\\{.*?\\}/', $pattern, $m)) {
foreach ($m[0] as $raw_brace) {
$braces[preg_quote($raw_brace)] = '(?:' . str_replace(',', '|', preg_quote(substr($raw_brace, 1, -1), '/')) . ')';
}
}
$pattern = preg_quote($pattern, '/');
$pattern = str_replace('\\*', '.*', $pattern);
$pattern = str_replace('\\?', '.', $pattern);
$pattern = str_replace(array_keys($braces), array_values($braces), $pattern);
return '/' . $pattern . '/';
}