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

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

516215e7daf2225231ed4a57d19a0a95.png

?

有点像现在流行的输入法中的特殊字符。

?

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

?

class:

?

class ascii

{

var $asciiText;

function ascii($text,$style)

{

switch($style)

{

case 'graffiti': include "graffiti.font"; break;

case 'banner': include 'banner.font'; break;

default: include 'dos.font'; break;

}

$text=strtolower($text);

for($c=0;$casciiText=$output;

}

}

?

实例:

?

include_once("ascii.class.php"); // includes the class's file

$text=new ascii("justcoding","doc"); // first parameter is text that will be converted, second is the font style

print $text->asciiText; // asciiText is variable of converted text

?>

?

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

?

2. 汉字转ASCII 效果为 “星期天 ” 就是 “星期天”

?

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;

}

echo encode('日'); // 日 浏览器默认会解读,所以要看源代码

?

3. utf-8 unicode 互转

?

// utf8 - unicode

function utf8_unicode($c) {

switch(strlen($c)) {

case 1:

return ord($c);

case 2:

$n = (ord($c[0]) & 0x3f) << 6;

$n += ord($c[1]) & 0x3f;

return $n;

case 3:

$n = (ord($c[0]) & 0x1f) << 12;

$n += (ord($c[1]) & 0x3f) << 6;

$n += ord($c[2]) & 0x3f;

return $n;

case 4:

$n = (ord($c[0]) & 0x0f) << 18;

$n += (ord($c[1]) & 0x3f) << 12;

$n += (ord($c[2]) & 0x3f) << 6;

$n += ord($c[3]) & 0x3f;

return $n;

}

}

echo utf8_unicode('以');

?>

?

// unicode - utf8

function u2utf8($c) {

$str="";

if ($c < 0x80) $str.=$c;

else if ($c < 0x800) {

$str.=chr(0xC0 | $c>>6);

$str.=chr(0x80 | $c & 0x3F);

} else if ($c < 0x10000) {

$str.=chr(0xE0 | $c>>12);

$str.=chr(0x80 | $c>>6 & 0x3F);

$str.=chr(0x80 | $c & 0x3F);

} else if ($c < 0x200000) {

$str.=chr(0xF0 | $c>>18);

$str.=chr(0x80 | $c>>12 & 0x3F);

$str.=chr(0x80 | $c>>6 & 0x3F);

$str.=chr(0x80 | $c & 0x3F);

}

return $str;

}

echo u2utf8('20197');

?>

?

?

?

?

?

相关文章

相关视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值