我想将Unicode代码转换为字符。这是我尝试过的:
{{1}}
答案 0 :(得分:5)
您不需要将整数转换为十六进制字符串,而是使用IntlChar::chr:
echo IntlChar::chr(127468);
直接来自IntlChar::chr
的文档:
按代码点值
返回Unicode字符
答案 1 :(得分:0)
如果要获取浮点数(例如12e-4
,连接片段),则会出现类似的问题。解析在编译器中过早完成以允许它。但是,您可以使用eval()
来执行此操作。呸。
答案 2 :(得分:0)
几个小时后实际找到解决方案:
$unicode = '1F605'; //?
$uni = '{' . $unicode; // First bracket needs to be separated, otherwise you get '\u1F605'
$str = "\u$uni}";
eval("\$str = \"$str\";"); // Turns unicode into RegEx and store it as $str
echo $str;
感谢@Rick James使用eval()函数的想法
答案 3 :(得分:0)
PHP 7+ 解决方案片段:
function charFromCodePoint($codepoint) {
eval('$ch = "\u{'.dechex($codepoint).'}";');
return $ch;
}
请注意,PHP5 不支持“\u{}”语法。