复制代码代码如下:
class ascii
{
function decode($str)
{
preg_match_all( "/(d{2,5})/", $str,$a);
$a = $a[0];
foreach ($a as $dec)
{
if ($dec {
{
$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://www.bkjia.com/PHPjc/328066.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/328066.html技術記事次のようにコードをコピーします。 class ascii { function decode($str) { preg_match_all( "/(d{2,5})/", $str,$a); a as $dec) { if ($dec 128) { $utf .= chr($dec) } els...
;