【问题标题】:What is an invalid path according to fnmatch?根据 fnmatch,什么是无效路径?
【发布时间】:2016-02-19 08:53:51
【问题描述】:

我使用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() 认为什么是无效路径?

【问题讨论】:

    标签: php path posix


    【解决方案1】:

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

    【讨论】:

    • 问题是我无法在 15GB 的数据上运行 var_dump。不知道什么时候出现问题。除了使用输出缓冲并在调用此函数后检查它是否为空之外,没有办法找出是否发生了这种情况。另外,我喜欢你的头像。
    • 你是对的......我错过了“15GB”:/。如果您不知道它发生在哪里,也许您可​​以使用 try->catch 块,这样您就可以准确地打印(或收集)导致问题的字符串。我知道这不是一个解决方案,但至少可以给你一些提示。对于个人资料图片,谢谢:D
    猜你喜欢
    • 2011-02-11
    • 2011-07-26
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2014-08-02
    相关资源
    最近更新 更多