浅析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 相关文章推荐
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
那些年一起学习的PHP(二)
Mar 21 PHP
php array的学习笔记
May 16 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
php 启动报错如何解决
Jan 17 PHP
PHP错误和异长常处理总结
Mar 06 PHP
php随机抽奖实例分析
Mar 04 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
yii插入数据库防并发的简单代码
May 27 PHP
浅析PHP数据导出知识点
Feb 17 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使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python获取当前日期和时间的方法
2015/04/30 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
Python 去除字符串中指定字符串
2020/03/05 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
大学生实习证明范本
2014/01/15 职场文书
三年级语文教学反思
2014/02/01 职场文书
入党申请自荐书范文
2014/02/11 职场文书
公司管理建议书范文
2014/03/12 职场文书
公休请假条
2014/04/11 职场文书
防沙治沙典型材料
2014/05/07 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
基层党建工作简报
2015/07/21 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技