在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文件處理的效率與安全性。