📜  php 正则表达式文件扩展名 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:31.566000             🧑  作者: Mango

PHP 正则表达式匹配文件扩展名

在编写 PHP 程序时,经常需要匹配文件名的扩展名。使用正则表达式可以轻松地完成这项任务。本文将介绍在 PHP 中使用正则表达式匹配文件扩展名的方法和注意事项。

步骤
  1. 定义正则表达式

    首先,我们需要定义一个正则表达式来匹配文件扩展名。文件扩展名通常是文件名的末尾,以点号(.)开头。因此,可以使用如下的正则表达式:

    $pattern = '/\.([a-z]+)$/i';
    

    解释:

    • \.:表示匹配一个点号
    • ([a-z]+):表示匹配一个或多个小写字母
    • $:表示匹配字符串末尾

    /i 表示正则表达式不区分大小写。

  2. 使用 preg_match() 函数匹配文件扩展名

    现在我们可以使用 preg_match() 函数来匹配文件扩展名。该函数需要三个参数:

    preg_match($pattern, $filename, $matches);
    
    • $pattern:是上面定义的正则表达式
    • $filename:需要匹配的文件名
    • $matches:存储匹配结果的数组

    例如,我们可以这样使用:

    $filename = 'index.php';
    preg_match($pattern, $filename, $matches);
    

    这样就可以在 $matches 数组中得到匹配结果了。如果匹配成功,则 $matches[0] 存储整个匹配到的字符串,$matches[1] 存储第一个括号中匹配到的部分,以此类推。因此,如果要得到文件扩展名,则可以这样使用:

    $extension = $matches[1];
    
  3. 完整代码片段

    整个程序的完整代码如下:

    $filename = 'index.php';
    $pattern = '/\.([a-z]+)$/i';
    preg_match($pattern, $filename, $matches);
    $extension = $matches[1];
    echo $extension; // 输出 php
    
注意事项
  • 上面的正则表达式仅匹配拓展名中包含小写字母的文件。如果要匹配包含大写字母或数字的文件,可以将正则表达式中的 [a-z] 改为 [a-zA-Z0-9]
  • 如果一个文件名中包含多个点号,上面的正则表达式只能匹配最后一个点号后的字符串作为拓展名。如果需要匹配所有点号后的字符串,可以将正则表达式中的 $ 改为 \z
  • 如果要匹配不同操作系统中文件名的拓展名,可以使用 pathinfo() 函数。