浅析PHP的ASCII码转换类


Posted in PHP onJuly 05, 2013
class ascii
{
function decode($str)
{
    preg_match_all( "/(d{2,5})/", $str,$a);
    $a = $a[0];
    foreach ($a as $dec)
    {
        if ($dec < 128)
        {
            $utf .= chr($dec);
        }
        else if ($dec < 2048)
       {
            $utf .= chr(192 + (($dec - ($dec % 64)) / 64));
            $utf .= chr(128 + ($dec % 64));
        }
        else
        {
            $utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));
            $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
            $utf .= chr(128 + ($dec % 64));
        }
    }
    return $utf;
}
function encode($c)
{
    $len = strlen($c);
    $a = 0;
    while ($a < $len)
    {
        $ud = 0;
        if (ord($c{$a}) >=0 && ord($c{$a})< =127)
        {
            $ud = ord($c{$a});
            $a += 1;
        }
        else if (ord($c{$a}) >=192 && ord($c{$a})< =223)
        {
            $ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);
            $a += 2;
        }
        else if (ord($c{$a}) >=224 && ord($c{$a})< =239)
        {
            $ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);
            $a += 3;
        }
        else if (ord($c{$a}) >=240 && ord($c{$a})< =247)
        {
            $ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);
            $a += 4;
        }
        else if (ord($c{$a}) >=248 && ord($c{$a})< =251)
        {
            $ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128);
            $a += 5;
        }
        else if (ord($c{$a}) >=252 && ord($c{$a})< =253)
        {
            $ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128);
            $a += 6;
        }
        else if (ord($c{$a}) >=254 && ord($c{$a})< =255)
        { //error
            $ud = false;
        }
        $scill .= "&#$ud;";
    }
    return $scill;
}
PHP 相关文章推荐
珊瑚虫IP库浅析
Feb 15 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
php堆排序(heapsort)练习
Nov 13 PHP
php中in_array函数用法分析
Nov 15 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
9个比较实用的php代码片段
Mar 15 PHP
php面向对象值单例模式
May 03 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 #PHP
PHP cdata 处理(详细介绍)
Jul 05 #PHP
PHP的基本常识小结
Jul 05 #PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 #PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 #PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 #PHP
php记录代码执行时间(实现代码)
Jul 05 #PHP
You might like
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
浅谈PHP的反射机制
2016/12/15 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
小学教师培训感言
2014/02/11 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
企业安全标语
2014/06/07 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
初中军训感言
2015/08/01 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技