PHP - HTML 编码的引号引起的字符串长度不正确

ric*_*wol 2 php

我有来自数据库的以下字符串:让我们获得功能

如果我通过 strlen 运行它,它会返回 25 个字符,而不是预期的 20 个。var 转储显示该字符串与上面类似(没有 html 引用等)。

如果我删除单引号,strlen 将返回 19 个字符。

显然,引用返回 5 个字符而不是 1 个 - 为什么?我怎样才能阻止这个?

谢谢!

小智 5

实体HTML名称为'for ',等于 5 个字符,因此您的strlen()结果完全正确。您看不到 HTML 引用,因为您的浏览器正在呈现它们。打开页面源代码以查看实际的 PHP 输出。

为了避免这个问题,您应该避免htmlspecialchars()在输入上使用函数或等效编码(因为它只能在 HTML 上下文中的输出上使用)。

作为临时解决方法,您可以html_entity_decode()在 之前申请strlen()