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读取IMAP邮件
Oct 09 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
坏狼的PHP学习教程之第1天
Jun 15 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
PHP命名空间用法实例分析
Sep 04 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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引用效率问题分析
2012/03/23 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
Python循环结构的应用场景详解
2019/07/11 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
python实现猜数游戏
2020/03/27 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
销售实习自我鉴定
2013/12/07 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
社区党建工作方案
2014/06/10 职场文书
质量月口号
2014/06/20 职场文书
2014年医院工作总结
2014/11/20 职场文书