PHP Unicode代码点到字符

时间:2018-01-24 21:42:03

标签: php unicode

我想将Unicode代码转换为字符。这是我尝试过的:

{{1}}

4 个答案:

答案 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{}”语法。