Base64可以將二進制轉碼成可見字符方便進行http傳輸,但是base64轉碼時會生成“+”,“/”,“=”這些被URL進行轉碼的特殊字符,導致兩方面數據不一致。
我們可以在發送前將“+”,“/”,“=”替換成URL不會轉碼的字符,接收到數據後,再將這些字符替換回去,再進行解碼。
一、URL安全的字符串編碼:
function urlsafe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
二、URL安全的字符串解碼:
function urlsafe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}