php base64如何进行URL字符串编码和解码?

Base64可以将二进制转码成可见字符方便进行http传输,但是base64转码时会生成“+”,“/”,“=”这些被URL进行转码的特殊字符,导致两方面数据不一致。

我们可以在发送前将“+”,“/”,“=”替换成URL不会转码的字符,接收到数据后,再将这些字符替换回去,再进行解码。

一、URL安全的字符串编码:

  1. function urlsafe_b64encode($string) {
  2. $data = base64_encode($string);
  3. $data = str_replace(array('+','/','='),array('-','_',''),$data);
  4. return $data;
  5. }

二、URL安全的字符串解码:

  1. function urlsafe_b64decode($string) {
  2. $data = str_replace(array('-','_'),array('+','/'),$string);
  3. $mod4 = strlen($data) % 4;
  4. if ($mod4) {
  5. $data .= substr('====', $mod4);
  6. }
  7. return base64_decode($data);
  8. }