【问题标题】:Clean emoji in input输入中的清洁表情符号
【发布时间】:2020-07-14 21:25:34
【问题描述】:

如何清除我的表单输入中的表情符号等字符?例如,当我在文本区域中使用类似 ???? 的表情符号发布段落时,记录不会插入到数据库中。我无法将我的数据库表更改为 utf8mb。现在是utf8。我已经尝试了以下功能,但它们都不起作用。

$str = iconv('UTF-8', 'UTF-8//IGNORE', $str);
$str = utf8_encode($str);
$str = mb_convert_encoding ($str, "UTF-8");
$str = htmlspecialchars ($str);
$str = htmlspecialchars ($str, ENT_SUBSTITUTE, 'UTF-8');
$str = htmlspecialchars ($str, ENT_SUBSTITUTE);

json_encode($str) 确实将表情符号更改为“\UXXXX”之类的东西,但它将所有输入都包含在双引号中,我必须为每个输入解码它。

如果有人输入“hello world ????”,请明确我想将以下内容之一保存到数据库中: 你好世界或 你好世界 :-) 或 你好世界:微笑:

【问题讨论】:

    标签: php utf-8 user-input emoji


    【解决方案1】:

    据我所知,您的数据库字符集必须是 utf8mb4

    查看herehere 了解更多信息。

    【讨论】:

      【解决方案2】:

      您可以使用iconv:UCS2 字符集仅支持 basic multilingual plane——就像 mysql 的“utf8”版本一样——因此通过 UCS2 进行往返将删除所有表情符号,同时保留大多数现代字符语言。

      $s = "hello world ?";
      $s = iconv("ucs2", "utf8", iconv("utf8", "ucs2//IGNORE", $s))
      var_dump($s); // string(12) "hello world "
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 2020-04-12
        相关资源
        最近更新 更多