我有一个字符串,其中包含特殊字母,如“á
”和htmlcode,如“<input type='text' />
”。当我将此字符串存储在我的数据库中时,我使用:htmlentities($string, ENT_QUOTES);
。
问题是当我输出文本时,我使用html_entity_decode($string_from_db, ENT_QUOTES)
和数据库中的所有实体,如“á
”表示字母,“<input type='text' title="LA1&qu...
”表示htmlcode被转换。所以我的输出会显示“á
”字母和一个不正常的文本字段。我希望这封信是这样的,但对于该字段,我想显示代码“<input type='text' />
”而不是实际字段。
我需要这个多语言网站,有很多用户输入,所以我需要能够正确处理特殊字母,但也要保护输入错误。任何建议都非常有用。
答案 0 :(得分:0)
您可以在htmlspecialchars
之后再追加html_entity_decode
;该函数只会将HTML中具有特殊功能的字符转换为它们的实体:
htmlspecialchars(html_entity_decode($string_from_db, ENT_QUOTES), ENT_QUOTES)
这应该注意结果字符串没有未编码的html字符。当然,在性能方面,这可能不是最好的解决方案,但它很简单!
答案 1 :(得分:0)
用户提交的文本我用以下方式清理它:
function sanitize_form_input($string) {
$string = mysql_real_escape_string($string);
return $string;
}
获得页面编码,php编码,html编码,mysql编码......以及编码设置为UTF-8的任何其他可能的东西。
输出文字:
function sanitize_db_output($string) {
return htmlentities(stripslashes($string), ENT_QUOTES, 'UTF-8');
}
如果这是一种错误的方法,请告诉我。