Ты когда-нибудь слышал про такую функцию? Я — нет, недавно случайно её встретил в коде Infection.
По сути, это
glob для строковых путей.
fnmatch(string $pattern, string $filename, int $flags = 0): bool
Грамматика шаблона:
? совпадает с одним символом,* совпадает с пустой строкой или несколькими символами,[] определяет набор или диапазон ASCII символов ([0-9], [0-9a-zABC]),! используется для отрицания внутри [],\ экранирует спецсимволы.Важный флаг —
FNM_PATHNAME. Он запрещает ?, *, [] совпадать со слешом.
dump(
fnmatch('*/index.php', 'a/b/c/index.php'), // true
fnmatch('*/index.php', 'a/b/c/index.php', FNM_PATHNAME), // false
fnmatch('*/index.php', 'a/index.php', FNM_PATHNAME), // true
);
📁https://www.php.net/manual/ru/function.fnmatch.php
Этот пост был доступен месяц назад в PHPeople