Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

禁用掉用户数据中的麻烦字符

  现代Web都是基于UTF-8字符集的,它支持了所有Unicode字符,每个字符的长度从1字节到4字节不等。其中有很多字符在显示时会根据Unicode的性质做出奇怪的行为,比如竖着排列。所以对于面向国内的网站就不该允用户数据中包含这些奇怪的字符。
  在QQ空间、贴吧、微博,等这些平台上都看到过发出奇怪字符的情况,比如下面这个
ฦ๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๋๐   这类字符就会影响到字符区域以外的东西,所以应该把它视为非法字符。但我们要把Unicode中所有非法字符都找出来是很困难的,因为数量太大了。但是我们可以使用白名单模式,仅限合法字符通过。很多网站的用户数据都是可以用汉字、字母、数字、以及一些简单符号的,其实日文的假名也经常被作为颜文字来使用。这样的话,程序我们的白名单就基本和GBK字符集支持的字符一样了。这个特殊字符验证只需要判断输入进来的数据是否满足GBK字符集,否则不予通过。PHP中可以通过转换来实现验证
$text=$_GET['text'];
if($text==iconv('GBK','UTF-8',iconv('UTF-8','GBK',$text))){
  echo '合法的GBK字符';
}else{
  echo '包含了非GBK字符';
};
  当然有些时候需要支持特殊的语种,比如韩文、德文、俄文,等就需要更复杂的验证了。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^