[英]htmlspecialchars “Forbidden code point” validation error
我的php脚本正在从MySQL表获取包含如下字符串的行:
$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨';
通过HTML5验证器运行文档时,是否有一种方法可以将这些类型的字符串回显到浏览器而又不会获得“禁止的代码点”?
我尝试了以下方法:
htmlspecialchars($string);
htmlspecialchars($string, ENT_SUBSTITUTE, 'UTF-8');
htmlspecialchars($string, ENT_DISALLOWED, 'UTF-8');
htmlspecialchars(mb_convert_encoding($string, 'UTF-8');
但是所有这些表达式仍然会导致“禁止的代码点”错误。 网页的编码已通过meta标签设置为UTF-8:
<meta charset="UTF-8">
您可能正在寻找PHP函数htmlentities()
。 此功能会将提供的适用字符转换为HTML实体。
例如:
$string = 'ï¼'ã¤ã®ä¹³é…¸èŒã®ç¨'; $string = htmlentities($string); echo $string;
会将您的, ï¼'ã¤ã®ä¹³é…¸èŒã®ç¨
字符串转换为ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨uml;
可用于在HTML页面上正确显示。
有关此功能的更多信息,请参见: https : //secure.php.net/manual/en/function.htmlentities.php
对我有用的解决方案是:
htmlspecialchars($string, ENT_SUBSTITUTE | ENT_DISALLOWED);
这会将尽可能多的字符转换为UTF-8,并删除了所有其他字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.