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

PHP 解析 URL 並提取查詢參數為陣列(parse_url + parse_str)

     編輯:PHP 相關知識

兩大內建函數協作

PHP 提供 parse_url() 分解 URL 結構,parse_str() 將查詢字串解析為變數陣列,兩者結合即可輕鬆提取參數。

函數速查

parse_url (PHP 4, 5, 7, 8)

mixed parse_url ( string $url [, int $component = -1 ] )
  • 返回關聯陣列:scheme、host、port、user、pass、path、query、fragment。
  • 指定 $component 可直接取得對應字串(PHP_URL_PORT 返回整數)。
  • 不驗證 URL 合法性,盡力解析不完整 URL。

parse_str

void parse_str ( string $str [, array &$arr ] )
  • 將查詢字串解析為變數,若提供 $arr 則存入陣列,否則直接註冊到當前符號表(不推薦)。
  • 受 magic_quotes_gpc 影響,開啟時會自動 addslashes()。

實戰範例

<?php
$url = 'https://www.example.com/ad.php?id=325&action=index&page=3';
$urlarr = parse_url($url);
parse_str($urlarr['query'], $parr);

print_r($urlarr);
/* 輸出:
Array(
    [scheme] => http
    [host] => www.example.com
    [path] => /ad.php
    [query] => id=325&action=index&page=3
)
*/

print_r($parr);
/* 輸出:
Array(
    [id] => 325
    [action] => index
    [page] => 3
)
*/
?>

進階應用提示

  1. 安全過濾:解析後建議對參數值進行 htmlspecialchars() 或型別轉換。
  2. 多值參數:若 URL 含 ids[]=1&ids[]=2,parse_str 會自動生成陣列 $parr['ids'] = [1,2]。
  3. 編碼處理:中文參數需配合 urldecode() 使用。

掌握這兩個函數,處理 URL 參數將不再需要正則表達式,代碼更簡潔健壯。

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