一个PHP基础问题

duanbiaowu 2014-11-25 11:46:20
项目里有这么段代码,注释什么的都没有,求大神给写个注释,或是告诉我这个函数做了什么?在线等。

function utf8_bytes($cp) {
if ($cp > 0x10000){
# 4 bytes
return chr(0xF0 | (($cp & 0x1C0000) >> 18)).
chr(0x80 | (($cp & 0x3F000) >> 12)).
chr(0x80 | (($cp & 0xFC0) >> 6)).
chr(0x80 | ($cp & 0x3F));
}else if ($cp > 0x800){
# 3 bytes
return chr(0xE0 | (($cp & 0xF000) >> 12)).
chr(0x80 | (($cp & 0xFC0) >> 6)).
chr(0x80 | ($cp & 0x3F));
}else if ($cp > 0x80){
# 2 bytes
return chr(0xC0 | (($cp & 0x7C0) >> 6)).
chr(0x80 | ($cp & 0x3F));
}else{
# 1 byte
return chr($cp);
}
}
...全文
282 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostwuboy 2014-11-25
  • 打赏
  • 举报
回复
不是128位,是一个byte
ghostwuboy 2014-11-25
  • 打赏
  • 举报
回复
这是转码的,比如这个字符 “à”,你直接用chr,他会显示乱码,因为这个ASCII 128位表示不了这个字符 $c = utf8_bytes(0xe0); echo $c . "<br/>"; echo chr(0xc3) . chr(0xa0); echo chr(0x90) . "<br/>";
xuzuning 2014-11-25
  • 打赏
  • 举报
回复
这个函数名字起得不好,不能望文生义 这个函数的作用是将 unicode 码值转换成 utf-8 字符 比如
echo utf8_bytes(0x4e2d); //中
echo utf8_bytes(0x6587); //文
函数通过一系列的位移操作,将数值拆分按utf-8 编码规则拼装成字符串 utf-8 编码规则 U+007F 0xxxxxxx U+07FF 110xxxxx 10xxxxxx U+FFFF 1110xxxx 10xxxxxx 10xxxxxx U+1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧