≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php encode64编码类的简单示例

人气:495 时间:2018-09-22

这篇文章主要为大家详细介绍了php encode64编码类的简单示例,具有一定的参考价值,可以用来参考一下。

对php encode64编码类代码感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
encode64可以获得最短的由26个英文大小写字母数字加上"-_"两个符号编码的数据, 这个个字串可以在网络自由传输, 无需考虑被自动转码引起的混乱. 缺点: 对于大字串太慢了, 原因不明, 可能PHP脚本本身就是慢, 所以它内置 很多函数, 这些函数如果用脚本来实现是不可忍受的. 而JavaScript就没这个问题, 脚本的速度快的多.
 

/**
 * php encode64编码类代码
 *
 * @param 
 * @arrange 512-笔记网: q1010.com
 **/
<?PHP
//encode64编码可以同时取代encodeURI,encodeURIComponent,endode函数, 因为选取的这些字符都不会被编码.
class Encode64{
	function code($str) {
		$KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh';
		$a = StrToBytes($str);
		$len = count($a);
		$res = $len % 3; 
		$s = "";$i = 2;$v = 0;
		for (; $i < $len; $i += 3) {
			$v = $a[$i - 2] + ($a[$i - 1] << 8) + ($a[$i] << 16);
			$s .= $KEY[$v & 0x3f];
			$s .= $KEY[($v >> 6) & 0x3f];
			$s .= $KEY[($v >> 12) & 0x3f];
			$s .= $KEY[($v >> 18)];
		}
		if ($res == 1) {
			$v = $a[$i - 2];
			$s .= $KEY[$v & 0x3f];
			$s .= $KEY[($v >> 6) & 0x3f];
		} else if ($res == 2) {
			$v = $a[$i - 2] + ($a[$i - 1] << 8);
			$s .= $KEY[$v & 0x3f];
			$s .= $KEY[($v >> 6) & 0x3f];
			$s .= $KEY[($v >> 12) & 0x3f];
		}
		return $s;
	}
	function decode($codeStr) {
		$KEY = 'PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh';
		$dic = array();
		for ($i = 0; $i < 64; $i++) {
			$dic[$KEY[$i]] = $i;
		}
		$len = strlen($codeStr);
		$res = $len % 4;
		$cLen = floor($len/4)*3;
		if($res==2) $clen += 1;
		elseif($res==3) $clen += 2;
		$code = range(0,$clen);
		$i = 3;$v = 0; $j = 0;
		for (; $i < $len; $i += 4) {
			$v = $dic[$codeStr[$i - 3]];
			$v += $dic[$codeStr[$i - 2]] << 6;
			$v += $dic[$codeStr[$i - 1]] << 12;
			$v += $dic[$codeStr[$i]] << 18;
			$code[$j] = $v & 0xff;
			$code[$j+1] = ($v >> 8) & 0xff;
			$code[$j+2] = ($v >> 16) & 0xff;
			$j += 3;
		}
		if ($res == 2) {//正确的字节数肯定是余2或3, 没有1的情况, 如果出现, 舍弃.
			$v = $dic[$codeStr[$i - 3]];
			$v += $dic[$codeStr[$i - 2]] << 6;
			$code[$j] = $v & 0xff;
		} else if ($res == 3) {
			$v = $dic[$codeStr[$i - 3]];
			$v += $dic[$codeStr[$i - 2]] << 6;
			$v += $dic[$codeStr[$i - 1]] << 12;
			$code[$j] = $v & 0xff;
			$code[$j+1] = ($v >> 8) & 0xff;
		}
		return BytesToStr($code);
	}
}
function BytesToStr($bytes) {
	$str = '';
	foreach($bytes as $ch) {
		$str .= chr($ch);
	}
	return iconv('UTF-16BE','utf-8',$str);
}
function StrToBytes($str) {
	$str = iconv('utf-8','UTF-16BE',$str);
	$len = strlen($str);
	$bytes = array();
	for($i=0;$i<$len;$i++) {
		$bytes[] =  ord($str[$i]) ;
	}
	return $bytes;//来自 5 1 2 p i c .c o m
}

 

本文来自:http://www.q1010.com/173/864-0.html

注:关于php encode64编码类的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:encode64

您可能感兴趣的文章

上一篇:PHP encod64加密函数示例
下一篇:PHP 计算日期所在周的开始和结束日期
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。