【发布时间】:2010-10-04 00:43:34
【问题描述】:
好的,有很多关于清理字符串的内容,但我能找到的内容很少,关于准备用户输入(就像我现在输入的内容)以插入内容管理系统的最佳方法如何过滤出来。
我正在构建两个多语言(日语、英语 + 其他罗曼语语言)CMS,并且有一段时间让两个特殊字符(如 ®、™)与日语字符一起显示。
我继续得到非常不一致的结果。
我已将所有内容设置为 UTF-8:
网页:和
.htaccess 文件:AddDefaultCharset UTF-8 AND(强制问题)
在每个数据库连接之后:mysql_query("SET NAMES 'UTF8'");
每个数据库、表和字段也设置为 utf8_general_ci
魔术引号已关闭。我首先使用 htmlpurifier 的默认设置预处理用户输入,然后在其上运行此函数:
function html_encode($var) {
// Encodes HTML safely for UTF-8. Use instead of htmlentities.
$var = htmlentities($var, ENT_QUOTES, 'UTF-8');
// convert pesky special characters to unicode
$look = array('™', '™','®','®');
$safe = array('™', '™', '®', '®');
$var = str_replace($look, $safe, $var);
$var = mysql_real_escape_string($var);
return $var;
}
这样就可以进入数据库了。
我通过使用此函数过滤所有内容从数据库中返回它:
function decodeit($var) {
return html_entity_decode(stripcslashes($var), ENT_QUOTES, 'UTF-8');
}
不幸的是,毕竟我仍然得到不一致的结果。 ® 符号通常会变成小菱形。
我已经到处寻找了一个很好的方法,但似乎找不到最好的方法......
【问题讨论】:
标签: php mysql content-management-system filtering user-input