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生成静态页
Nov 25 PHP
php flv视频时间获取函数
Jun 29 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
php生成shtml类用法实例
Dec 09 PHP
php操作mongoDB实例分析
Dec 29 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
php需登录的文件上传管理系统
Mar 21 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
php模式设计之观察者模式应用实例分析
Sep 25 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php 问卷调查结果统计
2015/10/08 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
js DOM的学习笔记
2011/12/22 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
2014年酒店前台工作总结
2014/11/14 职场文书
春节晚会开场白
2015/05/29 职场文书
活动宣传稿范文
2015/07/23 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
mysql创建存储过程及函数详解
2021/12/04 MySQL
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python