php – htmlspecialchars输出空白
发布时间:2020-12-13 22:35:41 所属栏目:PHP教程 来源:网络整理
导读:使用htmlspecialchars和htmlentities会导致诸如?符号甚至单个’引号之类的项目的空白输出.显然,这绝对是无用的,但是在不使用html字符的情况下输出数据会导致这两个符号都出现.出现这种情况的原因是什么? 这是导致问题的代码: p?php echo nl2br(htmlspecial
使用htmlspecialchars和htmlentities会导致诸如?符号甚至单个’引号之类的项目的空白输出.显然,这绝对是无用的,但是在不使用html字符的情况下输出数据会导致这两个符号都出现.出现这种情况的原因是什么?
这是导致问题的代码: <p> <?php echo nl2br(htmlspecialchars($aboutarray[0]['about_us'],ENT_COMPAT,"UTF-8")); ?> </p>
该字符串未以有效的UTF-8编码进行编码.它可能是在另一种编码中,如UTF-16,或者它可能只包含一些与任何格式都不对应的二进制垃圾.
底线是,因为你指定了“UTF-8”作为htmlspecialchars()的编码类型参数,如果字符串不符合“UTF-8”,它将返回一个空字符串.它在PHP manual中说明了这一点. 一个简单的解决方法是使用substitute或ignore标志.更改: htmlspecialchars($aboutarray[0]['about_us'],"UTF-8") 至: htmlspecialchars($aboutarray[0]['about_us'],ENT_COMPAT|ENT_SUBSTITUTE,"UTF-8") 要么: htmlspecialchars($aboutarray[0]['about_us'],ENT_COMPAT|ENT_IGNORE,"UTF-8") 注意:ENT_IGNORE删除不符合的字节.这可能会导致a security issue.最好真正理解字符串的内容以及字符串的编码方式.更正问题的根源而不是使用简单的ENT_IGNORE修复. 你应该问问自己为什么你的字符串不是用UTF-8编码的……应该是,但事实并非如此. 我碰巧刚遇到这个问题;您可以阅读有关返回空字符串的原因的详细信息here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |