完全参照Java 改写了一版本PHP,希望能提供方便。

<?phpClassBase62{privatestatic$encodes="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";/*publicstaticStringBufferencodeBase62(byte[]data){StringBuffersb=newStringBuffer(data.length*2);intpos=0,val=0;for(inti=0;i<data.length;i++){val=(val<<8)|(data[i]&0xFF);pos+=8;while(pos>5){charc=encodes[val>>(pos-=6)];sb.append(c=='i'?"ia":(c=='+'?"ib":(c=='/'?"ic":c)));val&=((1<<pos)-1);}}if(pos>0){charc=encodes[val<<(6-pos)];sb.append(c=='i'?"ia":(c=='+'?"ib":(c=='/'?"ic":c)));}returnsb;}*/publicstaticfunctionbase62_encode($data){$sb='';$len=strlen($data);$pos=$val=0;for($i=0;$i<$len;$i++){$tv=substr($data,$i,1);$val=($val<<8)|(ord($tv)&0xFF);$pos+=8;while($pos>5){$c=substr(self::$encodes,$val>>($pos-=6),1);$sb.=$c=='i'?"ia":(($c=='+')?"ib":(($c=='/')?'ic':$c));$val&=((1<<$pos)-1);}}if($pos>0){$c=substr(self::$encodes,$val<<(6-$pos),1);$sb.=($c=='i')?"ia":(($c=='+')?"ib":(($c=='/')?'ic':$c));}return$sb;}/*publicstaticbyte[]decodeBase62(char[]data){ByteArrayOutputStreambaos=newByteArrayOutputStream(data.length);intpos=0,val=0;for(inti=0;i<data.length;i++){charc=data[i];if(c=='i'){c=data[++i];c=c=='a'?'i':(c=='b'?'+':(c=='c'?'/':data[--i]));}val=(val<<6)|decodes[c];pos+=6;while(pos>7){baos.write(val>>(pos-=8));val&=((1<<pos)-1);}}returnbaos.toByteArray();}*/publicstaticfunctionbase62_decode($data){$baos='';$pos=$val=0;$len=strlen($data);for($i=0;$i<$len;$i++){$c=substr($data,$i,1);if($c=='i'){$c=substr($data,++$i,1);$c=($c=='a')?'i':($c=='b'?'+':($c=='c'?'/':substr($data,--$i,1)));}$val=($val<<6)|strpos(self::$encodes,$c);$pos+=6;while($pos>7){$tv=($val>>($pos-=8));//var_dump($tv);$baos.=chr($tv);$val&=((1<<$pos)-1);}}return$baos;}}foreach([1,2,3,'a','b','c','addddd','111','fkdskfjdsljflsdjfljsaldkjflaskjfldskjlfkjdslkfjladskjfldsk']as$v){var_dump($v);$b=Base62::base62_encode($v);var_dump($b);var_dump(base64_encode($v));var_dump(Base62::base62_decode($b));echo"----------------------\n";}