转义序列

$chr = '4E2D';
echo html_entity_decode('&#x' . $chr . ';', ENT_COMPAT, 'UTF-8');

上面的代码会输出汉字:中
原因就是转义序列。
下面是转自知乎的资料

形如——&#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」。所以——中国中国——这两种 NCR 写法都会在显示时转换为「中国」二字。
NCR 可以用于转义任何 Unicode 字符,而 character entity reference 很受限,参见 HTML 4 和 HTML5 中已有定义的字符列表:
作者:梁海链接:https://www.zhihu.com/question/21390312/answer/18091465来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(转义序列)