ホームページ  >  記事  >  バックエンド開発  >  PHP Base62 エンコードおよびデコードの実装

PHP Base62 エンコードおよびデコードの実装

WBOY
WBOYオリジナル
2016-06-23 13:40:101585ブラウズ

 1 <?php 2 /** 3 *    @desc base62编码解码实现 4 *    @param String $data 5 *    @author Space 6 *    @date 2014/8/6 7 **/ 8  9 function base62_encode($data){10     $base62str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';11     $data = strval($data);12     $base62 = str_split($base62str);13     $len = strlen($data);14     $i = 0;15     $tmpArr = array();16     while($i<$len){17         $val = $data[$i];18         $tmp = str_pad(decbin(ord($data[$i])),8,'0',STR_PAD_LEFT );19         $temp = str_split($tmp,4);20         $tmpArr = array_merge($tmpArr,$temp);21         ++$i;22     }23     $result = '';24     $i = 0;25     foreach($tmpArr as $arr){26         $temp = bindec($arr)*4+$i%2;27         $result .= $base62[$temp];28         ++$i;29     }30     return $result;31 }32 33 function base62_decode($data){34     $base62str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';35     $data = strval($data);36     $base62 = str_split($base62str);37     $base62Arr = array_flip($base62);38     if(!preg_match('/[a-zA-Z0-9]+/',$data)){39         return false;40     }41     $len = strlen($data);42     $i = 0;43     $tempArr = array();44     while($i<$len){45         $temp = decbin(($base62Arr[$data[$i]]-$i%2)/4);46         $tempArr[] = str_pad($temp,4,'0',STR_PAD_LEFT);47         ++$i;48     }49     $result = '';50     $tempArr = array_chunk($tempArr,2);51     foreach($tempArr as $arr){52         $result .= chr(bindec(join('',$arr)));53     }54     return $result;55 }

必要に応じて $base62str 変数内の文字をランダムに並べ替えることもできます。これは単純な暗号化と同等ですが、あまり意味はありません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。