martingking 发表于 2008-6-4 11:19:09

中文字符长度的验证规则

在我们验证一个输入框值时,不希望其中中文字符长度超过一定数额。设置验证规则为:
      $rules[ 'name' ] = "trim|required|max_length";
这时候有一个问题,就是这个长度是按照字节长度来验证的。我们的程序里面用的是中文utf-8的编码方式。所以我们一个中文字符是3个相应的英文字符。当字符超过规定时,报错信息将会报出我们在验证规则中写入的数字,就是15。但是实际上,由于一个中文字符是3个英文字符。所以我们需要的显示的为5个字符。。不知道大家有没有遇到过这种问题。。
谢谢。。

airwin 发表于 2008-6-4 13:58:18

看了一下 Validation 库 貌似直接用的是 strlen
偶没使过CI
楼主可以试着修改 max_length / min_length 函数

长度比较利用 mb_internal_encoding() 和 mb_strlen() 函数

redlink 发表于 2010-8-3 15:51:39

//return (mb_strlen($str) > $val) ? FALSE : TRUE;                       
return ((strlen($str) + mb_strlen($str,'UTF8'))/2 > $val) ? FALSE : TRUE;

haohailuo 发表于 2010-8-4 17:57:16

使用回调函数比较好,想怎么处理都行
页: [1]
查看完整版本: 中文字符长度的验证规则