htmlspecialchars "Forbidden code point" 验证错误
htmlspecialchars "Forbidden code point" validation error
我的 php 脚本从 MySQL table 中获取包含如下字符串的行:
$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨';
当 运行 文档通过 HTML5 验证器时,有没有办法在不获取 "Forbidden code point" 的情况下将这些类型的字符串回显到浏览器?
我试过以下方法:
htmlspecialchars($string);
htmlspecialchars($string, ENT_SUBSTITUTE, 'UTF-8');
htmlspecialchars($string, ENT_DISALLOWED, 'UTF-8');
htmlspecialchars(mb_convert_encoding($string, 'UTF-8');
但所有这些表达式仍然会导致 "Forbidden code point" 错误。网页的编码已通过元标记设置为 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,并删除所有其他字符。
我的 php 脚本从 MySQL table 中获取包含如下字符串的行:
$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨';
当 运行 文档通过 HTML5 验证器时,有没有办法在不获取 "Forbidden code point" 的情况下将这些类型的字符串回显到浏览器?
我试过以下方法:
htmlspecialchars($string);
htmlspecialchars($string, ENT_SUBSTITUTE, 'UTF-8');
htmlspecialchars($string, ENT_DISALLOWED, 'UTF-8');
htmlspecialchars(mb_convert_encoding($string, 'UTF-8');
但所有这些表达式仍然会导致 "Forbidden code point" 错误。网页的编码已通过元标记设置为 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,并删除所有其他字符。