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读写文件的方法(生成HTML)
Nov 27 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 PHP
PHP读取xml方法介绍
Jan 12 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
php分页查询的简单实现代码
Mar 14 PHP
详解php中serialize()和unserialize()函数
Jul 08 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
Python创建日历实例
2014/08/21 Python
Python的gevent框架的入门教程
2015/04/29 Python
Python IDLE入门简介
2017/12/08 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
django ajax发送post请求的两种方法
2020/01/05 Python
python——全排列数的生成方式
2020/02/26 Python
Python识别处理照片中的条形码
2020/11/16 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
什么是反射
2012/03/17 面试题
高二化学教学反思
2014/01/30 职场文书
策划创业计划书
2014/02/06 职场文书
大学生就业策划书范文
2014/04/04 职场文书
2014年人事科工作总结
2014/11/19 职场文书
财务管理制度范本
2015/08/04 职场文书
多人股份制合作协议书
2016/03/19 职场文书
调解协议书范本
2016/03/21 职场文书
导游词之四川武侯祠
2019/10/21 职场文书