Я хочу дать возможность сопоставить строку с подстановочным знаком *
.
Пример
$mystring = 'dir/folder1/file';
$pattern = 'dir/*/file';
stringMatchWithWildcard($mystring,$pattern); //> Returns true
Пример 2:
$mystring = 'string bl#abla;y';
$pattern = 'string*y';
stringMatchWithWildcard($mystring,$pattern); //> Returns true
Я подумал, что-то вроде:
function stringMatch($source,$pattern) {
$pattern = preg_quote($pattern,'/');
$pattern = str_replace( '\*' , '.*?', $pattern); //> This is the important replace
return (bool)preg_match( '/^' . $pattern . '$/i' , $source );
}
В основном замена *
на . *?
(учитывая в * nix
окружение *
соответствует пустой
строке) © vbence
Какие-либо улучшения / предложения?
// Добавлен return (bool)
, потому что preg_match возвращает int