gpt4 book ai didi

php - 使用 htmlspecialchars 和 htmlentities 转换特殊字符

转载 作者:行者123 更新时间:2023-11-29 02:36:10 26 4
gpt4 key购买 nike

我现在对将特殊字符注入(inject)我的数据库感到困惑...

例如,我想接受这样的字符 öù 等,我想在 html 上显示它们,例如 Löic 这是一个法语名字。

而且我想我必须先将这些特殊字符转换为 html 实体,然后再将它们注入(inject)数据库,例如 ö 用于 ö

如果我使用 htmlspecialchars() 来转换它们,

 Array
(
[name] => Löic
)

if(isset($_POST['name'])) $name = preg_replace('/\s\s+/', ' ', trim($_POST['name']));
$name = htmlspecialchars($name, ENT_QUOTES);

所以它应该被转换成这个 Löic 但它根本没有被转换,而是原样,

Löic

这就是我检查数据库时得到的,它存储为,

Löic

如果我使用 htmlentities() 来转换它们,

$name = htmlentities($name, ENT_QUOTES);

然后我明白了,

Löic

它在我的 html 上显示为这样,

Löic

为什么要这样做??我的头要爆炸了!我不知道问题出在哪里。请帮忙...我该怎么做才能让它正确?

是不是和我在那个name栏设置的utf8_general_ci有关??

谢谢。

最佳答案

发生这种情况是因为您正在尝试使用 htmlentites 转换 utf8 字符。遗憾的是,该函数只能正确处理 ascii 字符。最简单的解决方案是将字符串简单地存储在 utf8 数据库表中,并仅使用 htmlspecialchars 而不是 htmlentities 输出它们。请务必将您的页面编码设置为 utf8。

关于php - 使用 htmlspecialchars 和 htmlentities 转换特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com