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()和文件头信息。每种方法都有其适用的场景,在实际开发中根据具体情况选择最适合的方法。