Web開發中,URL傳遞中文字符、HTML標籤、SQL關鍵字等特殊內容時,常因瀏覽器編碼差異、安全過濾機制導致參數丟失或異常。本文提供一套經實戰驗證的Base64編碼+字符替換方案,有效解決跨瀏覽器兼容與安全過濾雙重難題。
<script>、union select等危險字符的攔截/、+、=,在URL中仍被視為特殊字符(如+被解析為空格)%20,部分為+,導致服務端解碼不一致function base_encode($str) {
$src = ['/', '+', '='];
$dist = ['_a', '_b', '_c'];
$old = base64_encode($str);
return str_replace($src, $dist, $old);
}
function base_decode($str) {
$src = ['_a', '_b', '_c'];
$dist = ['/', '+', '='];
$old = str_replace($src, $dist, $str);
return base64_decode($old);
}
原始字符串經base_encode後產出類似:xOO6w6Osuf65_aiy_atL_b00Ke5_b8jnus6ho6GjoaM_c,僅含字母數字與下劃線,完全安全傳遞於URL參數中,無需擔心編碼衝突或安全過濾。
urlencode vs rawurlencode