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

PHP 從 URL 取得副檔名

     編輯:PHP 綜合知識

簡單需求:從 https://example.com/path/file.html?id=1 取得 html。注意查詢字串、錨點、多重點號等邊界情況。

簡易版:pathinfo() (推薦)

$url = "https://www.jb51.net/index.html?id=1";
$path = parse_url($url, PHP_URL_PATH); // /index.html
$ext = pathinfo($path, PATHINFO_EXTENSION); // html
echo $ext;

手動解析版 (原文做法)

function getUrlPostfix($url) {
    $urlArr = explode('.', $url);
    $postfix = $urlArr[count($urlArr) - 1]; // 最後一段
    return substr($postfix, 0, 3); // 僅取前 3 字元 (不建議)
}

健壯版:處理查詢字串與錨點

function getExtensionFromUrl($url) {
    $parsed = parse_url($url);
    $path = $parsed['path'] ?? '';
    $filename = basename($path);
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    return strtolower($ext);
}

// 測試
var_dump(getExtensionFromUrl("https://example.com/file.tar.gz")); // gz
var_dump(getExtensionFromUrl("https://example.com/.htaccess"));   // "" (隱藏檔無副檔名)
var_dump(getExtensionFromUrl("https://example.com/file?name=test")); // "" (無副檔名)

常見陷阱

  • explode('.', $url) 會被查詢字串 ?id=1.2 干擾
  • substr($postfix, 0, 3) 假設副檔名 3 字元,實際可能 1-10+ 字元
  • 隱藏檔 .gitignore 無副檔名
  • 多重副檔名 .tar.gz 只取最後一段

一律使用 parse_url() + pathinfo() 組合,標準、健壯、無邊界錯誤。

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