首页 > 编程 > PHP > 正文

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

2019-11-21 21:07:05
字体:
来源:转载
供稿:网友

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

<?phpclass 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编程:www.VeVB.COm");echo "</xmp>";echo $aa->decode($str);?>

PS:这里再为大家提供2款ASCII编码转换操作相关工具供大家参考使用:

Native/ASCII在线编码转换工具:
http://tools.VeVB.COm/transcoding/native2ascii

在线中文汉字/ASCII码/Unicode编码互相转换工具:
http://tools.VeVB.COm/transcoding/chinese2unicode

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表