如何清除表单输入中的表情符号等字符?例如,当我在文本区域中发布一段带有表情符号的文字时😊,不会将记录插入数据库。我无法将数据库表更改为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"的内容,但它将所有输入都包装在双引号中,我必须对每个输入进行解码。
明确是否有人输入"你好世界"😊"我想将以下内容之一保存到数据库中:你好世界或你好世界:-(或你好世界:微笑:
您可以使用iconv
:UCS2字符集只支持基本的多语言平面,就像mysql版本的"utf8"一样,因此通过UCS2进行往返操作将删除所有表情符号,同时保留大多数现代语言中的大多数字符。
$s = "hello world 😊";
$s = iconv("ucs2", "utf8", iconv("utf8", "ucs2//IGNORE", $s))
var_dump($s); // string(12) "hello world "
根据我所看到的,您的数据库字符集需要是utf8mb4
。
查看此处和此处了解更多信息。