php ASCII 字符转换 (汉字及特殊字符) 宽字符 (uft8/unicode)

2014-09-22 15:58


1. 英文字母或者数字转ASCII 效果如上


class:


  1. <?  
  2. class ascii  
  3. {  
  4.     var $asciiText;  
  5.       
  6.     function ascii($text,$style)  
  7.     {  
  8.         switch($style)  
  9.         {  
  10.            case 'graffiti'include "graffiti.font"break;  
  11.            case 'banner'include 'banner.font'break;  
  12.            defaultinclude 'dos.font'break;  
  13.         }  
  14.   
  15.         $text=strtolower($text);  
  16.   
  17.         for($c=0;$c<strlen($text);$c++) $symbol[$c]=explode(" ",$arr[$text[$c]]);  
  18.   
  19.         for($c=0;$c<sizeof($symbol[0]);$c++):  
  20.             for($k=0;$k<strlen($text);$k++) $output.="&nbsp;".str_replace(" ","",$symbol[$k][$c]);  
  21.             $output.=" ";  
  22.         endfor;  
  23.           
  24.         $this->asciiText=$output;  
  25.     }  
  26. }  


实例:


  1. <PRE>  
  2. <?  
  3.   
  4. include_once("ascii.class.php");        // includes the class's file  
  5. $text=new ascii("justcoding","doc");          // first parameter is text that will be converted, second is the font style  
  6. print $text->asciiText;                 // asciiText is variable of converted text  
  7.   
  8. ?>  
  9. </PRE>  


可以通过css控制字符大小。具体见附件。


2. 汉字转ASCII 效果为 “&#26143;&#26399;&#22825; ” 就是 “星期天”


  1. function encode($c)  
  2. {  
  3.     $len = strlen($c);  
  4.     $a = 0;  
  5.     while ($a < $len)  
  6.     {  
  7.         $ud = 0;  
  8.         if (ord($c{$a}) >=0 && ord($c{$a})<=127)  
  9.         {  
  10.             $ud = ord($c{$a});  
  11.             $a += 1;  
  12.         }  
  13.         else if (ord($c{$a}) >=192 && ord($c{$a})<=223)  
  14.         {  
  15.             $ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);  
  16.             $a += 2;  
  17.         }  
  18.         else if (ord($c{$a}) >=224 && ord($c{$a})<=239)  
  19.         {  
  20.             $ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);  
  21.             $a += 3;  
  22.         }  
  23.         else if (ord($c{$a}) >=240 && ord($c{$a})<=247)  
  24.         {  
  25.             $ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);  
  26.             $a += 4;  
  27.         }  
  28.         else if (ord($c{$a}) >=248 && ord($c{$a})<=251)  
  29.         {  
  30.             $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);  
  31.             $a += 5;  
  32.         }  
  33.         else if (ord($c{$a}) >=252 && ord($c{$a})<=253)  
  34.         {  
  35.             $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);  
  36.             $a += 6;  
  37.         }  
  38.         else if (ord($c{$a}) >=254 && ord($c{$a})<=255)  
  39.         { //error  
  40.             $ud = false;  
  41.         }  
  42.         $scill .= "&#$ud;";  
  43.     }  
  44.     return $scill;  
  45. }  
  46.   
  47. echo encode('日'); // &#26085; 浏览器默认会解读,所以要看源代码  


3. utf-8 unicode 互转


  1. <?  
  2. // utf8 - unicode  
  3. function utf8_unicode($c) {  
  4.    switch(strlen($c)) {  
  5.      case 1:  
  6.        return ord($c);  
  7.      case 2:  
  8.        $n = (ord($c[0]) & 0x3f) << 6;  
  9.        $n += ord($c[1]) & 0x3f;  
  10.        return $n;  
  11.      case 3:  
  12.        $n = (ord($c[0]) & 0x1f) << 12;  
  13.        $n += (ord($c[1]) & 0x3f) << 6;  
  14.        $n += ord($c[2]) & 0x3f;  
  15.        return $n;  
  16.      case 4:  
  17.        $n = (ord($c[0]) & 0x0f) << 18;  
  18.        $n += (ord($c[1]) & 0x3f) << 12;  
  19.        $n += (ord($c[2]) & 0x3f) << 6;  
  20.        $n += ord($c[3]) & 0x3f;  
  21.        return $n;  
  22.    }  
  23. }  
  24.   
  25. echo utf8_unicode('以');  
  26. ?>  


  1. <?  
  2. // unicode - utf8  
  3. function u2utf8($c) {    
  4.     $str="";    
  5.     if ($c < 0x80) $str.=$c;    
  6.     else if ($c < 0x800) {    
  7.         $str.=chr(0xC0 | $c>>6);    
  8.         $str.=chr(0x80 | $c & 0x3F);    
  9.     } else if ($c < 0x10000) {    
  10.         $str.=chr(0xE0 | $c>>12);    
  11.         $str.=chr(0x80 | $c>>6 & 0x3F);    
  12.         $str.=chr(0x80 | $c & 0x3F);    
  13.     } else if ($c < 0x200000) {    
  14.         $str.=chr(0xF0 | $c>>18);    
  15.         $str.=chr(0x80 | $c>>12 & 0x3F);    
  16.         $str.=chr(0x80 | $c>>6 & 0x3F);    
  17.         $str.=chr(0x80 | $c & 0x3F);    
  18.     }  
  19.     return $str;    
  20. }  
  21.   
  22. echo u2utf8('20197');  
  23. ?> 

原文连接:http://justcoding.iteye.com/blog/875098

^