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

PHP parse_url() 函數解析 URL 完整指南

     編輯:PHP 相關知識

基本用法

$url = 'https://user:pass@example.com:8080/path?query=value#fragment';
$parts = parse_url($url);
print_r($parts);
/* 輸出
Array (
    [scheme] => http
    [host] => example.com
    [port] => 8080
    [user] => user
    [pass] => pass
    [path] => /path
    [query] => query=value
    [fragment] => fragment
) */

取得單一元件

echo parse_url($url, PHP_URL_HOST);    // example.com
echo parse_url($url, PHP_URL_PATH);    // /path
echo parse_url($url, PHP_URL_QUERY);   // query=value
// 可用常數:PHP_URL_SCHEME, HOST, PORT, USER, PASS, PATH, QUERY, FRAGMENT

常見應用場景

  • 抓取域名:parse_url($url, PHP_URL_HOST) 直接取得,無需正則。
  • 解析查詢字串:配合 parse_str($parts['query'], $arr) 獲取陣列。
  • URL 正規化:重組 scheme+host+path,去除 fragment、預設埠口。
  • 安全檢查:驗證 host 是否在白名單,防 SSRF/開放重導向。

注意事項

  • 不完整 URL(如 //example.com/path)會缺 scheme,host 仍可解析。
  • 2. 相對路徑(path/to/file)無法解析,需先補全基礎 URL。 3. 含非 ASCII 域名(IDN)需先 idn_to_ascii() 轉 Punycode 再解析。 4. PHP 8.1+ 棄用 parse_url() 部分行為,建議改用 parse_url() + UrlParser (symfony/polyfill) 或 League\Uri。

進階:parse_str() 完整查詢解析

$query = 'a=1&b=2&c[]=3&c[]=4';
parse_str($query, $arr);
// $arr = ['a'=>'1','b'=>'2','c'=>['3','4']]

parse_url() + parse_str() 是 PHP 處理 URL 的黃金組合,輕量、無依賴、標準庫即得。

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