根据 fnmatch 什么是无效路径


What is an invalid path according to fnmatch?

我正在使用fnmatch()来匹配PHP中的一些简单表达式,因为它比使用preg_match()性能更高,更简单。我正在运行超过 15GB 的数据,因此性能很重要。但是,对于某些字符串(我不知道是哪个),我收到警告:

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()。当路径具有空字节时,可能会出现此错误消息,主要是出于安全原因。如果这不起作用,请检查字符串的长度并确保它是您所期望的,以防万一还有其他不可见的字节。