我的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');
但所有这些表达式仍会导致“禁止代码点”错误。网页的编码已通过元标记设置为UTF-8:
<meta charset="UTF-8">
答案 0 :(得分:1)
PHP函数htmlentities()
可能正是您要找的。
此函数会将提供给它的适用字符转换为HTML实体。
例如:
$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨';
$string = htmlentities($string);
echo $string;
将您的ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨
字符串转换为ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨uml;
,可用于在HTML页面上显示而不会出错。
有关此功能的更多信息,请访问:https://secure.php.net/manual/en/function.htmlentities.php
答案 1 :(得分:0)
对我有用的解决方案是:
htmlspecialchars($string, ENT_SUBSTITUTE | ENT_DISALLOWED);
这会将尽可能多的字符转换为UTF-8并删除其他所有字符。