好了,有一噸的東西在那裏的消毒字符串,但是很少,我能找到,在最好的方法準備用戶輸入(就像我現在輸入的內容一樣)插入內容管理系統,然後如何過濾出來。最佳前處理和後處理多語言用戶輸入一個PHP/MySQL的CMS
我建設兩個多語種(日語,英語+其他羅曼語)的CMS,並具有與得到兩個特殊字符,如®時間赫克,™,與日文字符顯示屏。
我繼續得到非常不一致的結果。
我把一切都設置爲UTF-8:
網頁:和
.htaccess文件:AddDefaultCharset UTF-8,(給力的問題)
每個數據庫連接後:請求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');
}
不幸的是,這一切後我仍然得到不一致的結果。大多數情況下,®符號變成小鑽石。
我已經找遍了上一個很好的嘖嘖,但似乎無法找到什麼是最好的方法......
文本被爭吵。它是:e ++ enc = utf-8 – Sofia 2009-01-31 04:55:31