14
所以我在客戶端(輸入後)刪除控制字符(tab,cr,lf,\ v和所有其他不可見的字符),但由於客戶端不可信,我有也要在服務器中刪除它們。刪除UTF-8字符串中的控制字符
所以根據該鏈接http://www.utf8-chartable.de/
控制字符是從x00到1F和從7F至9F。 因此我的客戶(JavaScript)的控制焦炭去除功能是:
return s.replace(/[\x00-\x1F\x7F-\x9F]/g, "");
和我的PHP(服務器)控制焦炭去除功能是:
$s = preg_replace('/[\x00-\x1F\x7F-\x9F]/', '', $s);
現在,這似乎產生了與國際UTF8字符這樣的問題作爲ς(xCF x82)僅限於PHP(因爲x82位於第二個序列組中),所以相當於javascript的javascript不會產生任何問題。
現在我的問題是,我應該從7F到9F刪除控制字符?據我的理解,從127到159(7F到9F)的序列顯然可以是有效的UTF-8字符串的一部分?
另外,也許我不應該過濾00到31控制字符,因爲也有一些這些字符可以出現在一些奇怪的(日本?中國?),但有效的utf-8字符?
也許這可以幫助你:http://stackoverflow.com/q/12543476/1066234它是一個不同的正則表達式。 –