&# 开头的 html数字字符串(unicode) 转换成汉字

海伦丽人口红3.8g正品不掉色不沾杯咬唇妆唇膏持久保湿滋润非小样

如上格式的 html数字字符串 转换成汉字

mb_decode_numericentity($str,[0x0, 0xffff, 0, 0xffff],’UTF-8′);

mb_encode_numericentity

mb_decode_numericentity

 

使用的时候注意 转换范围和编码

 

 

$aa=”加厚珊瑚绒床垫 学生垫被1.5M 1.8米单人双人榻榻米海绵床褥褥子”;

preg_match_all(‘/&#(\d+)/’,$aa,$result);

$unistr=””;

foreach ($result[1] as $temp) {
$unistr .= ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256) ;
}
p(iconv(‘UCS-2BE’, ‘utf-8’, $unistr));
function p($argss)
{
echo ‘<pre>’;
print_r($argss);
}

 

 

其它一些知识

 

形如——

&#dddd;
&#xhhhh;
&#name;

——的一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。

以 HTML 为例,这三种转义序列都称作 character reference:

  • 前两种是 numeric character reference(NCR),数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。
  • 后一种是 character entity reference,后接预先定义的 entity 名称,而 entity 声明了自身指代的字符。

从 HTML 4 开始,NCR 以 Unicode 为准,与文档编码无关。

「中国」二字分别是 Unicode 字符 U+4E2D 和 U+56FD,十六进制表示的 code point 数值「4E2D」和「56FD」就是十进制的「20013」和「22269」。所以——

&#x4e2d;&#x56fd;
&#20013;&#22269;

——这两种 NCR 写法都会在显示时转换为「中国」二字。

NCR 可以用于转义任何 Unicode 字符,而 character entity reference 很受限,参见 HTML 4 和 HTML5 中已有定义的字符列表:

未经允许不得转载:开心乐窝-乐在其中 » &# 开头的 html数字字符串(unicode) 转换成汉字

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏