本文匯總 9 種 PHP 獲取文件擴展名的方法,涵蓋路徑解析、字符串操作、正則匹配等技巧,供開發者根據場景選擇最高效方案。
// 方法一:explode + end
function get_extension($file) { return end(explode('.', $file)); }
// 方法二:strrchr + substr
function get_extension($file) { return substr(strrchr($file, '.'), 1); }
// 方法三:pathinfo (PHP 5.4+ 陣列解構)
function get_extension($file) { return pathinfo($file)['extension']; }
// 方法四:strrpos + substr
function get_extension($file) { return substr($file, strrpos($file, '.') + 1); }
// 方法五:preg_split + end
function get_extension($file) { return end(preg_split('/\./', $file)); }
// 方法六:strrev 反轉字符串
function get_extension($file) { $rev=strrev($file); return strrev(substr($rev,0,strpos($rev,'.'))); }
// 方法七:pathinfo 指定旗標
function get_extension($file) { return pathinfo($file, PATHINFO_EXTENSION); }
// 方法八:正則匹配最後一個點及後綴
function get_extension($file) {
preg_match_all('/\.[a-zA-Z0-9]+/',$file,$data);
return !empty($data[0]) ? substr(end($data[0]),1) : '';
}
// 方法九:strrchr + str_replace
function get_extension($file) { return str_replace('.','',strrchr($file,'.')); }
// 測試
$file = "https://10.31.63.8:8081/M00/00/09/Ch8_CFaaMLqAO87JAACePvS0ZRk.webp";
var_export(get_extension($file)); // 輸出 'webp'
pathinfo($file, PATHINFO_EXTENSION)),語義清晰、效能佳、內建函數可靠。parse_url 取 path 再處理。