Andy's Blog » php ascii, php ascii码, PHP UTF-8 转 ASCII, php怎么把中文转换为Ascii码, php 内容增加acsii » PHP的ASCII码转换类

PHP的ASCII码转换类

作者:未知

以前花了不少时间,找可以把中文转ascii码的php代码,utf-8也只是ascii的一种。后来中手册上找到了个,把他改为了批量转换,还增加了一个常用的ascii代码还原字符。这个代码写好了有一段时间了,没什么时间把这些贴出来,大家可以看看,这个类不止只是中文的转换哟

ascii_class.php
<?php
class ascii
{
 
function decode($str)
{
    
preg_match_all( "/(d{2,5})/", $str,$a);
    
$a = $a[0];
    
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;
}
 
function encode($c)
{
    
$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 .= "&#$ud;";
    
}
    
return $scill;
}
 
}
?>

使用任何字符集看,效果都是一样的,效果地址如下:
http://qh8.net/test/class.ascii.php

Incoming search terms:

Tags: PHP, class, , 转换, ascii

本文地址: http://blog.21andy.com/20070113/530.html