English | 简体中文 | 繁體中文
查询

fnmatch()函数—用法及示例

「 使用模式匹配来比较字符串 」


函数名称:fnmatch()

适用版本:PHP 4, PHP 5, PHP 7

函数说明:fnmatch() 函数用于使用模式匹配来比较字符串。它类似于 Unix shell 的文件名匹配规则。

语法:bool fnmatch(string $pattern, string $string[, int $flags = 0])

参数:

  • $pattern:要匹配的模式,可以包含通配符字符 *(匹配任何字符序列)和 ?(匹配任何单个字符)。
  • $string:要与模式进行比较的字符串。
  • $flags(可选):可以是以下常量的组合:
    • FNM_NOESCAPE:禁用反斜杠转义。
    • FNM_PATHNAME:要求模式匹配整个路径。
    • FNM_PERIOD:在模式的开头必须出现句点才能匹配。

返回值:如果 $string 匹配 $pattern,则返回 true,否则返回 false。

示例1:

$pattern = "*.txt"; // 匹配以 .txt 结尾的文件名
$string = "file.txt";

if (fnmatch($pattern, $string)) {
    echo "匹配成功";
} else {
    echo "匹配失败";
}

输出:

匹配成功

示例2:

$pattern = "image*.jpg"; // 匹配以 image 开头,以 .jpg 结尾的文件名
$string = "image123.jpg";

if (fnmatch($pattern, $string)) {
    echo "匹配成功";
} else {
    echo "匹配失败";
}

输出:

匹配成功

注意事项:

  • fnmatch() 函数区分大小写,如果需要进行大小写不敏感的匹配,可以使用 strcasecmp() 函数进行比较。
  • $pattern 中的通配符字符 * 和 ? 可以出现在任何位置,也可以使用多个。例如,"*.txt" 匹配以 .txt 结尾的文件名,"file?.txt" 匹配类似 "file1.txt"、"fileA.txt" 的文件名。
  • $flags 参数可以控制模式匹配的一些行为,例如是否需要整个路径匹配、是否需要以句点开头等。
  • fnmatch() 函数在匹配过程中会自动处理反斜杠转义,如果不需要转义,可以使用 FNM_NOESCAPE 标志禁用转义。
补充纠错
上一个函数: fopen()函数
下一个函数: fmod()函数
热门PHP函数
分享链接