允许htmlspecialchar呈现UTF-8字符,同时仍然转义常规标记


Allowing htmlspecialchars to render UTF-8 chars, while still escaping regular tags

我使用htmlspecialchar来转义页面上呈现的用户输入(这样If you want bold text, wrap it around a <b> tag like <b>this</b>的用户输入实际上就是这样呈现的,而不是将<b>解释为实际的html并将tag like this文本加粗。

htmlspecialchars在这里工作得很好,但似乎错误地将UTF8字符呈现为htmlentity数字代码。例如,不赞成的表情ಠ_ಠ在经过该功能后呈现为&#3232;_&#3232;

我应该怎么做才能正确地转义常规html,但仍然允许用户使用特殊的UTF8字符?

您设置了正确的编码吗?

utf8字符是否可能已转换为ಠ;符号;?如果您在该字符串上再次调用htmlspecialchar,则&变成&因此不再是utf8码,这可以通过将双重编码参数设置为false来防止。请参阅php.net上的文档:

http://php.net/htmlspecialchars