PHP ASCII码与字符串的相互转换的例子

三月 06, 2019 | views
Comments 0

下文小编为各位来介绍一篇关于PHP ASCII码与字符串的相互转换的例子,希望这个例子能够对各位有帮助.

  1. <?php 
  2. class ascii { 
  3.     /** 
  4.      * 将ascii码转为字符串 
  5.      * @param type $str  要解码的字符串 
  6.      * @param type $prefix  前缀,默认:&# 
  7.      * @return type 
  8.      */ 
  9.     function decode($str$prefix="&#") { 
  10.         $str = str_replace($prefix""$str); 
  11.         $a = <a href="/tags.php/explode/" target="_blank">explode</a>(";"$str); 
  12.         <a href="/tags.php/foreach/" target="_blank">foreach</a> ($a as $dec) { 
  13.             if ($dec < 128) { 
  14.                 $utf .= chr($dec); 
  15.             } else if ($dec < 2048) { 
  16.                 $utf .= chr(192 + (($dec - ($dec % 64)) / 64)); 
  17.                 $utf .= chr(128 + ($dec % 64)); 
  18.             } else { 
  19.                 $utf .= chr(224 + (($dec - ($dec % 4096)) / 4096)); 
  20.                 $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64)); 
  21.                 $utf .= chr(128 + ($dec % 64)); 
  22.             } 
  23.         } 
  24.         return $utf
  25.     } 
  26.     /** 
  27.      * 将字符串转换为ascii码 
  28.      * @param type $c 要编码的字符串 
  29.      * @param type $prefix  前缀,默认:&# 
  30.      * @return string 
  31.      */ 
  32.     function encode($c$prefix="&#") { 
  33.         $len = strlen($c); 
  34.         $a = 0; 
  35.         while ($a < $len) { 
  36.             $ud = 0; 
  37.             if (ord($c{$a}) >= 0 && ord($c{$a}) <= 127) { 
  38.                 $ud = ord($c{$a}); 
  39.                 $a += 1; 
  40.             } else if (ord($c{$a}) >= 192 && ord($c{$a}) <= 223) { 
  41.                 $ud = (ord($c{$a}) - 192) * 64 + (ord($c{$a + 1}) - 128); 
  42.                 $a += 2; 
  43.             } else if (ord($c{$a}) >= 224 && ord($c{$a}) <= 239) { 
  44.                 $ud = (ord($c{$a}) - 224) * 4096 + (ord($c{$a + 1}) - 128) * 64 + (ord($c{$a + 2}) - 128); 
  45.                 $a += 3; 
  46.             } else if (ord($c{$a}) >= 240 && ord($c{$a}) <= 247) { 
  47.                 $ud = (ord($c{$a}) - 240) * 262144 + (ord($c{$a + 1}) - 128) * 4096 + (ord($c{$a + 2}) - 128) * 64 + (ord($c{$a + 3}) - 128); 
  48.                 $a += 4; 
  49.             } else if (ord($c{$a}) >= 248 && ord($c{$a}) <= 251) { 
  50.                 $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); 
  51.                 $a += 5; 
  52.             } else if (ord($c{$a}) >= 252 && ord($c{$a}) <= 253) { 
  53.                 $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); 
  54.                 $a += 6; 
  55.             } else if (ord($c{$a}) >= 254 && ord($c{$a}) <= 255) { //error 
  56.                 $ud = false; 
  57.             } 
  58.             $scill .= $prefix.$ud.";"
  59.         } 
  60.         return $scill
  61.     } 
  62. /* 
  63.   PHP 转 ASCII 
  64. //phpfensi.com 
  65.   require_once "ascii_class.php"; 
  66. */ 
  67. $aa = new ascii; 
  68. echo "<xmp>"
  69. echo $str = $aa->encode("PHP二次开发:www.phpfensi.com"); 
  70. echo "</xmp>"
  71. echo $aa->decode($str); 
  72. ?> 



zend