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学习 字符串课件
Jun 15 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
PHP 柱状图实现代码
Dec 04 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
js 对象是否存在判断
2009/07/15 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
js实现常用排序算法
2016/08/09 Javascript
javascript的几种写法总结
2016/09/30 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python创建列表并给列表赋初始值的方法
2015/07/28 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
python程序 创建多线程过程详解
2019/09/23 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
应届毕业生如何写求职信
2014/02/16 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL