首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 獲取檔案副檔名的多種實用方法

     編輯:PHP 相關知識

PHP 核心並未內建直接取得副檔名的函數,開發者常需自行實作。本文整理幾種常見且可靠的取得副檔名方法,並分析其優缺點。

方法一:pathinfo() 函數(推薦)

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

方法二:SplFileInfo 類別(物件導向風格)

PHP 5.3+ 可使用 SPL 類別,語意更清晰:

function getExtensionOOP($filename) {
    $fileInfo = new SplFileInfo($filename);
    return strtolower($fileInfo->getExtension());
}

方法三:strrchr + substr(傳統寫法)

早期常見手法,需注意無副檔名情況:

function getExtensionClassic($filename) {
    $pos = strrpos($filename, '.');
    if ($pos === false) return '';
    return strtolower(substr($filename, $pos + 1));
}

常見陷阱與注意事項

  • 大小寫統一:建議統一轉小寫比對
  • 多重副檔名:如 .tar.gz 僅取 gz
  • 無副檔名檔案:需回傳空字串而非檔名本身
  • 路徑包含點號:pathinfo() 可正確處理 /home/user/.config/file 此類情況

效能比較

pathinfo() 為 C 語言實作,效能最佳;SplFileInfo 略有物件建立開銷,但現代 PHP 版本差異極小。建議統一專案使用 pathinfo() 以確保一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved