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

PHP 獲取 URL 參數含 # 等特殊符號的解決方案:JS 編碼傳遞法

     編輯:PHP 綜合知識

URL 中 # 為片段識別符,瀏覽器不會傳送至伺服器,導致 PHP $_GET 截斷參數。解決方案:客戶端使用 escape() 編碼後傳遞,伺服端自動解碼。

問題演示

// c.php
echo $_GET['key'];
  • c.php?key=999 → 輸出 999
  • c.php?key=9#888 → 輸出 9(#888 被瀏覽器截斷)

解決方案:JS escape() 編碼


查詢

編碼對照

PHP $_GET 會自動 urldecode(),伺服端直接獲得完整字串 9#888。

現代替代方案

// 推薦使用 encodeURIComponent(RFC 3986 標準)
keys = encodeURIComponent(keys);
// escape() 已棄用,不處理 UTF-8 非 ASCII 字元

伺服端驗證

$key = $_GET['key'];
// 進一步驗證格式、長度、字元集...
if (preg_match('/^[a-zA-Z0-9#_-]{1,50}$/', $key)) { /* ... */ }

總結

  • 客戶端編碼 → 伺服端自動解碼
  • 優先使用 encodeURIComponent()
  • 伺服端仍需驗證輸入合法性

此技巧適用於所有含特殊符號的 GET 參數傳遞場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
原始字元escape() 結果
#%23
&%26
=%3D
空格%20
中文%uXXXX