php - 用户输入的字符破坏了 xml_parse_into_struct 完成的 xml 解码

标签 php mysql

感谢您的回答! 这是关于 PHP/MySQL 的

用户输入一些文本,然后通过 htmlentities() 进行处理:

$new_userinput = htmlentities($userinput, ENT_QUOTES);

此条目存储在 XML 中:

...
<entrylist>
    <list>$new_userinput</list>
    <info>$someinfo</info>
</entrylist>
...

xml 文件以 UTF-8 格式存储在数据库中。该网站的 HTML 也使用 UTF-8 设置。

我们观察到的是特定输入,xml 的处理方式是:

$p = xml_parser_create();
xml_parse_into_struct($p, $xmlentry, $values, $index);
xml_parser_free($p);`

xml_parse_into_struct() 未正确处理

我们在数据库中看到的内容如下:

...
<note>Creatives share shots&acirc;€”small screenshots.</note>
...

最佳答案

您需要在htmlentities()中指定字符集,例如

$new_userinput = htmlentities($userinput, ENT_QUOTES, 'UTF-8');

举例说明

echo htmlentities("€", ENT_QUOTES); // &acirc;?&not;

echo htmlentities("€", ENT_QUOTES, "UTF-8"); // &euro;

关于php - 用户输入的字符破坏了 xml_parse_into_struct 完成的 xml 解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327642/

相关文章:

mysql - 尝试为外键赋值时出错

mysql - 如何从数据库中获取与发布时间匹配的所有时间?

php - 如何修复 CakePHP 中的 "Error: The view for SrcController::view() was not found."?

php - 检查是否合法的 PayPal HTTP notify_url 请求

php - 从 PHP 返回两个 2 json 对象

php - 正则表达式解析视频持续时间字符串

mysql - 将 AutoCommit 设置为 0 的 DBI 数据库句柄未通过 SELECT 返回正确的数据?

php - 将逗号分隔值插入 MYSQL + 附加表单数据

php - 下订单后如何清除 WooCommerce 账单电子邮件和账单电话结账字段?

javascript - 如何使用onchange根据选择的值显示不同的信息?