gpt4 book ai didi

php - 在 PHP 中从 "Java Escape"转换为索引

转载 作者:可可西里 更新时间:2023-11-01 13:28:22 26 4
gpt4 key购买 nike

是否有任何形式可以将 Java Escape 中的字符串转换为 PHP 中的 Index unicode?

我有这个字符串:

$ str = "\ud83d\ude0e";

我需要获取U+之后的部分:

U+1F60E 

或者python代码:

u'\U0001f60e'

对应代码:http://www.charbase.com/1f60e-unicode-smiling-face-with-sunglasses

谢谢。

==== 编辑 09/03 ====

很抱歉我的延迟,感谢您的回复,但我无法完成我需要的事情。

我需要用图像替换角色,所以我这样做:

$src = "Hello "."\ud83d\ude0e";

$replaced = preg_replace("/\\\\u([0-9A-F]{1,8})/i", "&#x$1;", $src);

$replaced = str_replace('&#x1f60e', '<img src="data/emoji_new/1F60E.png">', $replaced);

$result = mb_convert_encoding($replaced, "UTF-8", "HTML-ENTITIES");

但是,不行.. 结果是:

"Hello ��"

还有什么想法吗??

再次感谢!

最佳答案

非常类似于PHP: Convert unicode codepoint to 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);

输出的内容几乎肯定不会在大多数人的浏览器中正确显示。

Result is [Hello 😎] and string length is 10

或者从两个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;

输出:

Result is [Hello 😎] and string length is 10
in hex: 48, 65, 6c, 6c, 6f, 20, f0, 9f, 98, 8e

对于想知道“什么是 Java 转义?”的每个人,Java 在内部将所有字符编码为 UTF-16。

关于php - 在 PHP 中从 "Java Escape"转换为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15142878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com