在PHP开发过程中,获取文件扩展名是一项常见且必要的操作,尤其是在处理文件上传和文件类型判断时。本文将为您介绍几种常用的PHP方法来获取文件扩展名,并通过实际示例演示完整流程。
文件扩展名是文件名中最后一个点号(".")之后的部分,用于标识文件的类型。例如,文件名 "example.txt" 中,扩展名为 "txt"。通过扩展名,系统能够识别文件类型并决定使用何种程序打开该文件。
在PHP中,可以通过多种函数轻松提取文件扩展名。以下介绍两种常见且实用的方式:
pathinfo() 函数返回包含路径信息的关联数组,可以直接获取扩展名。
$file = 'example.txt';
$ext = pathinfo($file, PATHINFO_EXTENSION);
echo $ext;
执行后将输出:txt。
strrchr() 函数返回字符串中最后一次出现指定字符及其后续内容。结合 substr() 可以提取不带点号的扩展名。
$file = 'example.txt';
$ext = strrchr($file, '.');
// 输出 .txt
// 去掉点号
$ext = substr($ext, 1);
echo $ext;
执行后输出结果同样为:txt。
下面示范一个常见的文件上传场景,展示如何获取上传文件的扩展名,并进行类型和大小的校验。
if (isset($_POST['submit'])) {
$file = $_FILES['file'];
$fileName = $file['name'];
$fileExt = strtolower(end(explode('.', $fileName)));
$fileTmpName = $file['tmp_name'];
$fileSize = $file['size'];
$fileError = $file['error'];
$allowed = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($fileExt, $allowed)) {
if ($fileError === 0) {
if ($fileSize < 1000000) {
$fileNameNew = uniqid('', true) . '.' . $fileExt;
$fileDest = "uploads/" . $fileNameNew;
move_uploaded_file($fileTmpName, $fileDest);
echo "File uploaded successfully!";
} else {
echo "Your file is too big!";
}
} else {
echo "There was an error uploading your file!";
}
} else {
echo "You cannot upload files of this type!";
}
}
此代码通过$_FILES获取上传文件信息,提取文件扩展名后转为小写,确保文件类型符合允许列表。若满足文件大小及无上传错误,文件将被保存到指定目录,并反馈上传结果。
本文系统介绍了PHP中获取文件扩展名的多种方法,并结合文件上传实例,帮助开发者理解并掌握文件扩展名提取与文件上传的基本流程。掌握这些技巧,将有效提升PHP文件处理的效率与安全性。