在尝试通过 PHP 的 htmlentities 函数运行字符串时,我在某些情况下收到“无效的多字节序列”错误。有没有办法在调用函数之前清理字符串以防止发生此错误?
从 PHP 5.4 开始,您应该使用以下内容来正确转义输出:
$escapedString = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_HTML5, $stringEncoding);
ENT_SUBSTITUTE
用 � 替换无效的代码单元序列(而不是返回空字符串)。
ENT_DISALLOWED
将指定文档类型中无效的代码点替换为 �。
ENT_HTML5
指定使用的文档类型。根据您使用的情况,您可以选择ENT_HTML401
, ENT_XHTML
or ENT_XML1
.
使用这些选项,您可以确保结果在给定的文档类型中始终有效,无论您获得哪种令人厌恶的输入。
另外,不要忘记指定$stringEncoding
。依赖默认值是一个坏主意,因为它取决于ini
设置并且可能(并且确实)在版本之间发生变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)