function extend_1($file_name) {
$retval = "";
$pt = strrpos($file_name, ".");
if ($pt) $retval = substr($file_name, $pt + 1);
return $retval;
}
缺點:無副檔名返回空串;多點文件名(如 tar.gz)僅取最後一段。
function extend_2($file_name) {
$extend = pathinfo($file_name);
return strtolower($extend['extension'] ?? '');
}
優點:標準庫實現,正確處理路徑、多點、無副檔名情況,返回小寫。
function extend_3($file_name) {
$extend = explode(".", $file_name);
return $extend[count($extend) - 1] ?? '';
}
缺點:目錄名含點會誤判;無副檔名返回文件名本身。
| 方法 | 正確性 | 性能 | 推薦度 |
|---|---|---|---|
| pathinfo | ★★★★★ | ★★★★☆ | ✅ 首選 |
| strrpos+substr | ★★★☆☆ | ★★★★★ | 次選 |
| explode | ★★☆☆☆ | ★★★☆☆ | 不推薦 |
mime_content_type 或 finfo 驗證真實類型,防止偽造副檔名。strtolower。