PHP 核心並未內建直接取得副檔名的函數,開發者常需自行實作。本文整理幾種常見且可靠的取得副檔名方法,並分析其優缺點。
PHP 內建 pathinfo() 可解析路徑資訊,最標準、可靠:
function getExtension($filename) {
$info = pathinfo($filename);
return isset($info['extension']) ? strtolower($info['extension']) : '';
}
// 使用範例
echo getExtension('document.pdf'); // 輸出: pdf
echo getExtension('image.JPG'); // 輸出: jpg
echo getExtension('/path/to/file.tar.gz'); // 輸出: gz
PHP 5.3+ 可使用 SPL 類別,語意更清晰:
function getExtensionOOP($filename) {
$fileInfo = new SplFileInfo($filename);
return strtolower($fileInfo->getExtension());
}
早期常見手法,需注意無副檔名情況:
function getExtensionClassic($filename) {
$pos = strrpos($filename, '.');
if ($pos === false) return '';
return strtolower(substr($filename, $pos + 1));
}
.tar.gz 僅取 gzpathinfo() 可正確處理 /home/user/.config/file 此類情況pathinfo() 為 C 語言實作,效能最佳;SplFileInfo 略有物件建立開銷,但現代 PHP 版本差異極小。建議統一專案使用 pathinfo() 以確保一致性。