我已经尝试了很多功能,但我根本无法解决这个问题。无论如何,正确的方式。
在名为description的表单字段中,我可以期待各种字符。这些需要在提交给db之前格式化为HTML实体。
现在,我的代码:
$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES);
对于MySQL查询,我只需添加一个“安全”函数来削减'off the string:
mysql_real_escape_string($formdesc);
然而,这有时不起作用。例如,“é”变成了é而不是é。
必须有正常的功能。有谁知道我的意思?
答案 0 :(得分:13)
您需要指定htmlentities
function(此处为UTF-8)的编码:
$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES, 'UTF-8');
否则使用默认值ISO-8859-1
,并且以UTF-8编码为0xC3A9的示例中的字符é
将被解释为两个字符(Ã
和©
)。
但是为什么你还要使用htmlentities
?如果您只是想要转义HTML &
,<
,>
,"
和'
htmlspecialchars
等HTML特殊字符就足够了。
答案 1 :(得分:1)
您是否尝试过查看htmlspecialchars()和htmlspecialchars_decode()
约什
答案 2 :(得分:1)
似乎通常的PHP转义函数不适用于utf-8文本。也许Handling UTF-8 in JavaScript, PHP, and Non-UTF8 Databases会帮助你。关于utf-8和PHP的另一个来源是PHP UTF-8 cheatsheet。