在PHP中转换特殊字符

时间:2009-06-30 07:13:50

标签: php string character-encoding

我已经尝试了很多功能,但我根本无法解决这个问题。无论如何,正确的方式。

在名为description的表单字段中,我可以期待各种字符。这些需要在提交给db之前格式化为HTML实体。

现在,我的代码:

$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES);

对于MySQL查询,我只需添加一个“安全”函数来削减'off the string:

mysql_real_escape_string($formdesc);

然而,这有时不起作用。例如,“é”变成了é而不是é。

必须有正常的功能。有谁知道我的意思?

3 个答案:

答案 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