太简单了!PHP获取文件扩展名的7中方法

1. 使用pathinfo()函数

PHP的内置函数pathinfo()可以用来获取文件路径的各个部分,包括文件名、扩展名等。下面是使用pathinfo()函数来获取文件扩展名的代码:

$file = '/path/to/file.jpg';

$extension = pathinfo($file, PATHINFO_EXTENSION);

echo $extension; // 输出:jpg

2. 使用explode()函数

如果你只有文件名而没有文件路径,可以使用explode()函数将文件名按"."分割成数组,然后取数组的最后一个元素作为文件扩展名,如下:

$filename = 'file.jpg';

$parts = explode('.', $filename);

$extension = end($parts);

echo $extension; // 输出:jpg

3. 使用substr()函数

如果你只需要获取文件名的扩展名部分,可以使用substr()函数截取最后一个点之后的部分:

$filename = 'file.jpg';

$extension = substr($filename, strrpos($filename, '.') + 1);

echo $extension; // 输出:jpg

4. 使用preg_match()函数

如果你想要更灵活地匹配文件名中的扩展名部分,可以使用preg_match()函数结合正则表达式来进行匹配:

$filename = 'file.jpg';

preg_match('/\.(.*?)$/', $filename, $matches);

$extension = $matches[1];

echo $extension; // 输出:jpg

5. 使用strrchr()函数

另一种获取文件扩展名的方法是使用strrchr()函数,该函数返回字符串中最后一个出现的指定字符及其后面的部分:

$filename = 'file.jpg';

$extension = ltrim(strrchr($filename, '.'), '.');

echo $extension; // 输出:jpg

6. 使用pathinfo()和strtolower()函数

如果你希望将文件扩展名转换为小写形式,可以在使用pathinfo()函数获取到扩展名后,再使用strtolower()函数将其转换为小写:

$file = '/path/to/file.JPG';

$extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));

echo $extension; // 输出:jpg

7. 使用文件头信息

有时候文件的扩展名可能被篡改或者不存在,可以通过读取文件的头信息来判断文件的真实类型。以下是通过获取文件头信息来获取文件扩展名的代码:

$file = '/path/to/file';

$file_handle = fopen($file, 'r');

$data = fread($file_handle, 4);

fclose($file_handle);

$magic_number = [

'25504446' => 'pdf',

'FFD8FFE0' => 'jpg',

'89504E47' => 'png',

// 更多文件类型的映射

];

$extension = $magic_number[bin2hex($data)];

echo $extension; // 输出:pdf

总结

本文介绍了7种获取文件扩展名的方法:pathinfo()、explode()、substr()、preg_match()、strrchr()、pathinfo()+strtolower()和文件头信息。每种方法都有其适用的场景,在实际开发中根据具体情况选择最适合的方法。

后端开发标签