遇到问题:我需要把好大一坨类似“ 凡 ;客 ; ”这样的东西转化成可读的utf8编码。
例如 客 ; 代表「客」这个字
一步一步探索:
- 网上找了很多代码来试验,都以失败告终
- 直接google搜索 客 ; 变成了google 搜索 「客」这个关键字了
- 重新google后得知,该类型编码为html页面中可以正常显示为汉字的unicode的10进制表示形式
- 再次搜索,发现前辈的文章:http://blog.csdn.net/linvo/article/details/6221913, 里面提到
再次翻手册,在utf8_encode函数的评论中看到了一个有用的回复,试验成功!(PS:带评论的手册真他喵的好用~)
直接copy博主的函数使用,发现失败。最后跑到博主提到的 utf8_encode 官方文档里面去找评论,找到博主说的这个评论,发现博主粘贴的时候估计格式变了,导致不能使用,下面附上正确的转换函数。
php
function html_to_utf8 ($data) { $data=htmlspecialchars_decode(htmlspecialchars_decode($data)); return preg_replace("/\\&\\#([0-9]{3,10})\\;/e", '_html_to_utf8("\\1")', $data); } function _html_to_utf8($data) { if ($data > 127) { $i = 5; while ( ($i --) > 0 ) { if ($data != ($a = $data % ($p = pow ( 64, $i )))) { $ret = chr ( base_convert ( str_pad ( str_repeat ( 1, $i + 1 ), 8, "0" ), 2, 10 ) + (($data - $a) / $p) ); for($i; $i > 0; $i --) $ret .= chr ( 128 + ((($data % pow ( 64, $i )) - ($data % ($p = pow ( 64, $i - 1 )))) / $p) ); break; } } } else $ret = "&#$data;"; return $ret; }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。