在PHP中转换特殊字符

Mau*_*oon 3 php string character-encoding

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

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

现在,我的代码:

$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES);
Run Code Online (Sandbox Code Playgroud)

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

mysql_real_escape_string($formdesc);
Run Code Online (Sandbox Code Playgroud)

但是,这有时不起作用.例如,"é"变成了é而不是é.

必须有一个正常的功能.有谁知道我的意思?

Gum*_*mbo 13

您需要指定htmlentities函数的编码(此处为UTF-8):

$formdesc = htmlentities($_POST['formdesc'], ENT_QUOTES, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

否则使用默认值ISO-8859-1,并且é以UTF-8编码为0xC3A9的示例中的字符将被解释为两个字符(é).

但是你为什么htmlentities还要用?如果你只是想逃避的HTML特殊字符,例如&,<,>,"' htmlspecialchars就足够了.