fnmatch
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
fnmatch — 用模式匹配文件名
说明
fnmatch() 检查传入的 filename
是否匹配给出的 shell 通配符 pattern。
参数
pattern-
要匹配的
pattern。通常,pattern将包含匹配符,像'?'和'*'。pattern参数要使用的匹配符匹配符 说明 ?问号将匹配任何单个字符。比如,模式 "file?.txt"将匹配"file1.txt"和"fileA.txt",但不会匹配"file10.txt"。*星号将匹配零或多个字符。例如 "foo*.xml"将匹配"foo.xml"和"foobar.xml"。[ ]中括号用于创建 ASCII 码点范围或字符集。例如,模式 "index.php[45]"将匹配"index.php4"和"index.php5",但不会匹配"index.phpt"。众所周知的范围是[0-9]、[a-z]和[A-Z]。可以同时使用多个集合和范围,例如[0-9a-zABC]。!感叹号用于否定中括号内的字符。例如, "[!A-Z]*.html"将匹配"demo.html",但不会匹配"Demo.html"。\反斜线用于转义特殊字符。例如 "Name\?"将匹配"Name?",但不会匹配"Names"。 filename-
要检查的字符串。 此函数对于文件名尤其有用,但也可以用于普通的字符串。
普通用户可能习惯于 shell 模式或者至少在最简单的形式下使用
'?'和'*'通配符, 因此在前端搜索表达式输入中,使用 fnmatch() 来代替 preg_match() 对于非编程用户更加方便。 flags-
flags值可以是下列 flag 的任意组合,并用位运算符 OR (|) 连接。fnmatch() flag 列表 Flag说明 FNM_NOESCAPE禁用反斜线转义。 FNM_PATHNAMESlash in string only matches slash in the given pattern. FNM_PERIODLeading period in string must be exactly matched by period in the given pattern. FNM_CASEFOLDCaseless match. Part of the GNU extension.
示例
示例 #1 用 shell 中的通配符模式匹配来检查颜色名称
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "some form of gray ...";
}
?>注释
警告
目前该函数无法在 Windows 或其它非 POSIX 兼容的系统上使用。
参见
- glob() - 寻找与模式匹配的文件路径
- preg_match() - 执行匹配正则表达式
- sscanf() - 根据指定格式解析输入的字符
- printf() - 输出格式化字符串
- sprintf() - 返回格式化字符串