я использую fnmatch()
соответствовать некоторым простым выражениям в PHP, потому что это намного более производительно и проще, чем использование preg_match()
, Я использую более 15 ГБ данных, поэтому производительность имеет значение. Тем не менее, для некоторых строк (я не знаю, какие) я получаю предупреждение:
PHP Warning: fnmatch() expects parameter 2 to be a valid path, string given in /some/path/file.php on line xx
я понимаю fnmatch
тесно связан с путями и системой, на которой он работает (он доступен только в POSIX-системах), но документация для второго параметра описывает его следующим образом:
строка
Протестированная строка. Эта функция особенно полезна для
имена файлов, но также могут использоваться в обычных строках.Средний пользователь может быть использован для оболочки шаблонов или, по крайней мере, в их
простейшая форма для «?» и подстановочные знаки ‘*’, поэтому вместо fnmatch () вместо
preg_match () для ввода выражения поиска во внешнем интерфейсе может быть намного больше
удобно для не программирующих пользователей.
http://php.net/manual/en/function.fnmatch.php
Так что, похоже, есть ошибка в PHP или в документации. Но независимо от этого, было бы очень полезно, если бы кто-то знал, что вызвало это предупреждение.
Что fnmatch()
считать неверный путь?
Я бы предложил запустить var_dump (). Это сообщение об ошибке может появиться, когда путь имеет нулевой байт, в основном из соображений безопасности. Если это не сработает, проверьте длину строки и убедитесь, что это то, что вы ожидаете, на случай, если есть другие невидимые байты.
Других решений пока нет …