是否有任何形式将Java Escape中的字符串转换为PHP中的索引unicode?
我有这个字符串:
$ str = "\ud83d\ude0e";
Run Code Online (Sandbox Code Playgroud)
我需要在U +之后获得该部分:
U+1F60E
Run Code Online (Sandbox Code Playgroud)
或python代码:
u'\U0001f60e'
Run Code Online (Sandbox Code Playgroud)
对应代码:http://www.charbase.com/1f60e-unicode-smiling-face-with-sunglasses
谢谢.
====编辑09/03 ====
对不起我的延迟并感谢您的回复,但我无法做到我需要的.
我需要用图像替换caracter,所以我这样做:
$src = "Hello "."\ud83d\ude0e";
$replaced = preg_replace("/\\\\u([0-9A-F]{1,8})/i", "&#x$1;", $src);
$replaced = str_replace('😎', '<img src="data/emoji_new/1F60E.png">', $replaced);
$result = mb_convert_encoding($replaced, "UTF-8", "HTML-ENTITIES");
Run Code Online (Sandbox Code Playgroud)
但是,不工作..结果是:
"Hello ??"
Run Code Online (Sandbox Code Playgroud)
还有什么想法?
再次感谢你!
与 PHP 非常相似:将 unicode 代码点转换为 UTF-8
如果可以的话,直接从 4 字节字符开始。
$src = "Hello \u0001f60e";
$replaced = preg_replace("/\\\\u([0-9A-F]{1,8})/i", "&#x$1;", $src);
$result = mb_convert_encoding($replaced, "UTF-8", "HTML-ENTITIES");
echo "Result is [$result] and string length is ".mb_strlen($result);
Run Code Online (Sandbox Code Playgroud)
输出的内容几乎肯定无法在大多数人的浏览器中正确显示。
Result is [Hello ] and string length is 10
Run Code Online (Sandbox Code Playgroud)
或者从两个 UTF-16 代码:
$src = "Hello "."\ud83d\ude0e";
$replaced = preg_replace("/\\\\u([0-9A-F]{1,4})/i", "&#x$1;", $src);
$result = mb_convert_encoding($replaced, "UTF-16", "HTML-ENTITIES");
$result = mb_convert_encoding($result, 'utf-8', 'utf-16');
echo "Result is [$result] and string length is ".mb_strlen($result)."\n";
$resultInHex = unpack('H*', $result);
$resultInHex = $resultInHex[1];
$resultSeparated = implode(', ', str_split($resultInHex, 2));
echo "in hex: ".$resultSeparated;
Run Code Online (Sandbox Code Playgroud)
输出:
Result is [Hello ] and string length is 10
in hex: 48, 65, 6c, 6c, 6f, 20, f0, 9f, 98, 8e
Run Code Online (Sandbox Code Playgroud)
对于每个想知道“什么是 Java 转义?”的人来说,Java 在内部将所有字符编码为 UTF-16。