PHP 文件系统 fnmatch() 函数



PHP 文件系统fnmatch()函数用于将文件名或字符串与给定模式匹配。该函数可以检查给定字符串是否与给定的 shell 通配符模式匹配。此函数未在 Windows 平台上实现。

语法

以下是 PHP 文件系统fnmatch()函数的语法:

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

参数

以下是fnmatch()函数的必填和可选参数:

序号 参数及说明
1

pattern(必填)

您要匹配的模式。这包括字符

  • * 匹配任意数量的字符。
  • ? 匹配恰好一个字符。
  • [] 匹配任何一个包含的字符。
  • 2

    string(必填)

    这是您要匹配的字符串或文件名。

    3

    flags(必填)

    修改匹配行为的标志。可能的值为:FNM_NOESCAPE、FNM_PATHNAME、FNM_PERIOD

    返回值

    如果匹配则返回 TRUE,失败则返回 FALSE。

    PHP 版本

    fnmatch()函数首次作为 PHP 4.3.0 核心的一部分引入,并且与 PHP 5、PHP 7、PHP 8 良好兼容。

    示例

    PHP 文件系统fnmatch()函数返回一个布尔值,可以是 TRUE 或 FALSE,您可以使用条件表达式(如 if 语句和三元运算符)来验证这一点。查看以下代码示例:

    <?php
       //Define pattern here to match
       $pattern = "*.txt";
       $string = "sample.txt";
    
       if (fnmatch($pattern, $string)) {
          echo "The string matches the pattern.";
       } else {
          echo "The string does not match the pattern.";
       }
    ?>
    

    输出

    以下是上述 PHP 代码的输出:

    The string matches the pattern.   
    

    示例

    这段代码根据字符串“phpcodes.txt”是否与特定模式匹配创建一条消息。将 $colour 与模式“*phpcode[zs].txt”比较后,`fnmatch() 函数返回结果:任何字符都匹配 *,文件名必须包含 phpcode,[zs] 表示 phpcode 必须在 z 或 s 之后,结尾必须是 .txt。

    <?php
       $color = "phpcodes.txt";
       if(fnmatch("*phpcode[zs].txt", $color)) {
          echo "phpcodes";
       } else {
          echo "Color not found!";
       }
    ?>
    

    输出

    这将生成以下结果:

    phpcodes
    

    示例

    现在我们将使用 flags 参数来演示fnmatch()函数中的用法。例如,如果通配符 ? 匹配任何单个字符,则函数返回 true。

    <?php
       $pattern = "file?.txt";
       $string = "file1.txt";
    
       if (fnmatch($pattern, $string, FNM_PERIOD)) {
          echo "The string matches the pattern.";
       } else {
          echo "The string does not match the pattern.";
       }
    ?> 
    

    输出

    这将产生以下结果:

    如果模式和字符串匹配:

    The string matches the pattern
    

    如果模式和字符串不匹配:

    The string does not match the pattern.
    

    示例

    在此代码中,我们将检查文件名是否以 .jpg 结尾。由于 image.jpg 与模式匹配,它将打印成功消息。

    <?php
       $file = "picture.jpg";
       if (fnmatch("*.jpg", $file)) {
          echo "This is a JPEG image.";
       } else {
          echo "This is not a JPEG image.";
       }
    ?> 
    

    输出

    这将导致以下结果:

    This is a JPEG image.
    

    示例

    在此代码中,我们将检查文件名是否以“index”开头并以 .pdf 结尾。因此,如果文件与模式匹配,它将打印成功消息。

    <?php
       $file = "index2024.pdf";
       if (fnmatch("index*.pdf", $file)) {
          echo "This is an index file.";
       } else {
          echo "This is not an index file.";
       }
    ?> 
    

    输出

    这将创建以下输出:

    This is a index file.
    

    常见用例

    • 它可用于过滤文件列表。
    • 用于将用户输入与预定义模式匹配。
    • 用于验证文件名或扩展名。

    总结

    使用 PHP 的fnmatch()函数将文件名或字符串与给定模式匹配。类似于 shell 命令,它主要用于识别复制通配符的模式。

    php_function_reference.htm
    广告