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

PHP URL 編碼與解碼函數實戰

     編輯:PHP 相關知識

urlencode、urldecode、rawurlencode、rawurldecode 完整指南

網址傳遞參數時,特殊字元(空格、中文、符號)必須編碼,否則會導致伺服器解析錯誤。PHP 提供兩組函數處理 URL 編碼,差異在於空格與波浪號的處理方式。

兩組函數差異

函數空格編碼波浪號 ~適用場景
urlencode()+編碼為 %7E表單 POST 資料、application/x-www-form-urlencoded
urldecode()解碼 + 為空格解碼 %7E配合 urlencode
rawurlencode()%20不編碼(保留)URL 路徑、查詢字串、HTTP 標頭(RFC 3986)
rawurldecode()解碼 %20保留 ~配合 rawurlencode

實務範例

<?php
$url = 'https://example.com/search?q=PHP 教學&sort=desc';

// 1. 完整 URL 編碼(不建議,會編碼 : / ? = & 等結構字元)
echo urlencode($url) . "\n";
// https%3A%2F%2Fexample.com%2Fsearch%3Fq%3DPHP+%E6%95%99%E5%AD%B8%26sort%3Ddesc

// 2. 僅編碼查詢參數值(正確做法)
$query = http_build_query([
    'q' => 'PHP 教學',
    'sort' => 'desc'
]);
echo "https://example.com/search?{$query}\n";
// https://example.com/search?q=PHP+%E6%95%99%E5%AD%B8&sort=desc

// 3. 解碼
$encoded = 'q=PHP+%E6%95%99%E5%AD%B8&sort=desc';
parse_str($encoded, $params);
print_r($params);
// Array ( [q] => PHP 教學 [sort] => desc )
?>

最佳實務建議

  • 組建查詢字串請用 http_build_query(),自動處理編碼與陣列巢狀結構。
  • 解析查詢字串用 parse_str() 或 parse_url() 取得 query 再解析。
  • JavaScript 端對應 encodeURIComponent()(等同 rawurlencode)與 decodeURIComponent()。
  • 避免對完整 URL 直接使用 urlencode,會破壞 URL 結構。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved