【问题标题】:Php 7 - Transform unicode string into a unicode char #emojiPhp 7 - 将 unicode 字符串转换为 unicode char #emoji
【发布时间】:2018-09-18 06:22:49
【问题描述】:

我正在尝试用 PHP 编写一个小程序,从文本文件 (json) 中获取消息并将某些部分转换为表情符号。

问题是,我昨天才开始使用 php,从那以后,我没有找到使它工作的解决方案......

我有这个代码:

$message = $_GET["message"];
$emojis = array();
echo "{$message}\n";
preg_match("({[A-Z0-9]+})", $message, $emojis);
foreach($emojis as $key => $value) {
    echo "{$key} => {$value}\n";
    $emoji_string = "\\u".$value;
    $emoji_unicode = utf8_encode($emoji_string);
    $message = str_replace($value, $emoji_unicode, $message);
}
echo "{$message}\n";

所以我想要实现的是,通过使用在Regex101 上创建的这个正则表达式(\\u{[A-Z0-9]+}),我想将一个简单的 unicode 文本转换为一个表情符号,以便显示一个漂亮的消息哈哈

到目前为止,我知道\u{270B} #RaisedHand 末尾只有一个字符,所以这就是我尝试将字符串转换为简单字符的原因。我错了吗?但是,代码是错误的,因为我有 "\\u{270B}" 而不是 "\u{270B}"...

我现在真的不知道这件事,你有什么想法吗?

感谢您的帮助!

最大

编辑 1

我尝试了这条消息:嘿,怎么了? {270B}

输出:

PHP
debug start
Hey what's up? {270B}
0 => {270B}
Hey what's up? \u{270B}
debug done

【问题讨论】:

  • 回显 $message 得到了什么
  • 我为你编辑了:)
  • 我可能很愚蠢,但我认为问题是 \u{270B} 被回显为字符串,很久以前我遇到了同样的问题,我也许能够找出我是如何做到的。
  • 我发布了对我有用的答案:D
  • utf8_encode 是一个令人困惑的函数名称,因为它只做一件事:将 ISO-8559-1 字符串 (latin1) 转换为 UTF-8。它几乎从来都不是你需要的,在这种情况下绝对不是。

标签: php unicode emoji


【解决方案1】:

试试这个:我测试过它对我有用

$unicodeChar = '\u1000';
echo json_decode('"'.$unicodeChar.'"');

来自here

【讨论】:

  • 如果它对您有用,请接受答案:D 我有点喜欢这些绿色通知:D
  • 我无法让它工作:/但另一个anwser让它工作:/对不起:(还是谢谢!:)
  • 好吧,忘了提我试过没有 {} 但没关系:D
  • 是的 :D ........(不知道怎么写所以我添加了多个点以便能够发送消息)
  • 无论如何,给出的解决方案不适用于所有表情符号...使用这种格式\u{1F525},它会引起火灾,使用\u1F525 我只得到{1F525}
【解决方案2】:

问题是\u {270B} 不存在。右边是\u270B。这样做:

<?php
$message = "message {270B}";
$emojis = array();
echo "{$message}\n";
preg_match("({[A-Z0-9]+})", $message, $emojis);
foreach($emojis as $key => $value) {
    echo "{$key} => {$value}\n";
    $emoji_string = "\u".substr ($value, 1, -1); //remove {}
    $emoji_unicode = json_decode('"'.$emoji_string.'"'); //decode
    $message = str_replace($value, $emoji_unicode,  $message);
}
echo "{$message}\n";

我测试了它并且它有效。输出为:message ✋

【讨论】:

    猜你喜欢
    • 2019-04-19
    • 2021-08-16
    • 2021-11-16
    • 2021-11-27
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多