From d7e920c6b66b58573dcd6aa3eef89c3dc383585f Mon Sep 17 00:00:00 2001 From: Haotong Lin Date: Mon, 7 Dec 2015 20:48:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EBase64=E7=BC=96(=E8=A7=A3)?= =?UTF-8?q?=E7=A0=81=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/org/transform/driver/base64.php | 87 +++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 library/org/transform/driver/base64.php diff --git a/library/org/transform/driver/base64.php b/library/org/transform/driver/base64.php new file mode 100644 index 00000000..e1cf6c60 --- /dev/null +++ b/library/org/transform/driver/base64.php @@ -0,0 +1,87 @@ + +// +---------------------------------------------------------------------- + +namespace org\transform\driver; + +/** + * Base64编码实现 + * + */ +class Base64 +{ + /** + * @access public + * @static 编解码目标 + * default: 原始的编(解)码 + * url : URL友好的编(解)码 + * regex : 正则表达式友好的编(解)码 + */ + public static $target = 'default'; + + /** + * Base64编码函数 + * + * @param string $data 欲编码的数据 + * @param string $target 编码目标 + */ + public function encode($data, $target = '') + { + // 当函数没有特别指定编码目标时, 使用类自身编码目标 + if (empty($target)) { + $target = self::$target; + } + // 进行一次原始编码 + $data = base64_encode($data); + // 根据编码目标替换字符 + switch ($target) { + case 'url': + $data = str_replace(['+', '/', '='], ['-', '_', ''], $data); + break; + case 'regex': + $data = str_replace(['+', '/', '='], ['!', '-', ''], $data); + break; + case 'default': + default: + break; + } + // 返回编码结果 + return $data; + } + + /** + * Base64解码函数 + * + * @param string $data 欲解码的数据 + * @param string $target 解码目标 + */ + public function decode($data, $target = '') + { + // 当函数没有特别指定解码目标时, 使用类自身解码目标 + if (empty($target)) { + $target = self::$target; + } + // 根据解码目标替换字符 + switch ($target) { + case 'url': + $data = str_replace(['-', '_'], ['+', '/'], $data); + break; + case 'regex': + $data = str_replace(['!', '-'], ['+', '/'], $data); + break; + case 'default': + default: + break; + } + // 原始解码,并返回结果 + return base64_decode($data); + } + +}