PHP实现ASCII码与字符串相互转换的方法


Posted in PHP onApril 29, 2017

本文实例讲述了PHP实现ASCII码与字符串相互转换的方法。分享给大家供大家参考,具体如下:

<?php
class ascii {
  /**
   * 将ascii码转为字符串
   * @param type $str 要解码的字符串
   * @param type $prefix 前缀,默认:&#
   * @return type
   */
  function decode($str, $prefix="&#") {
    $str = str_replace($prefix, "", $str);
    $a = explode(";", $str);
    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;
  }
  /**
   * 将字符串转换为ascii码
   * @param type $c 要编码的字符串
   * @param type $prefix 前缀,默认:&#
   * @return string
   */
  function encode($c, $prefix="&#") {
    $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 .= $prefix.$ud.";";
    }
    return $scill;
  }
}
/*
 PHP 转 ASCII
 require_once "ascii_class.php";
*/
$aa = new ascii;
echo "<xmp>";
echo $str = $aa->encode("PHP编程:3water.com");
echo "</xmp>";
echo $aa->decode($str);
?>
PHP 相关文章推荐
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
PHP中str_replace函数使用小结
Oct 11 PHP
PHP 编写大型网站问题集
May 07 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
PHP中Notice错误常见解决方法
Apr 28 #PHP
PHP实现查询手机归属地的方法详解
Apr 28 #PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 #PHP
PHP解决中文乱码
Apr 28 #PHP
PHP中常用的魔术方法
Apr 28 #PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 #PHP
PHP实现文件下载【实例分享】
Apr 28 #PHP
You might like
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
javascript call和apply方法
2008/11/24 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
盘点提高 Python 代码效率的方法
2014/07/03 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
银行员工职业规划范文
2014/01/21 职场文书
模范教师事迹材料
2014/12/16 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
退休欢送会主持词
2015/07/01 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers