用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3446|回复: 3
收起左侧

[已解决] 中文字符长度的验证规则

[复制链接]
发表于 2008-6-4 11:19:09 | 显示全部楼层 |阅读模式
在我们验证一个输入框值时,不希望其中中文字符长度超过一定数额。设置验证规则为:
        $rules[ 'name' ] = "trim|required|max_length[15]";
这时候有一个问题,就是这个长度是按照字节长度来验证的。我们的程序里面用的是中文utf-8的编码方式。所以我们一个中文字符是3个相应的英文字符。当字符超过规定时,报错信息将会报出我们在验证规则中写入的数字,就是15。但是实际上,由于一个中文字符是3个英文字符。所以我们需要的显示的为5个字符。。不知道大家有没有遇到过这种问题。。
谢谢。。
发表于 2008-6-4 13:58:18 | 显示全部楼层
看了一下 Validation 库 貌似直接用的是 strlen
偶没使过CI
楼主可以试着修改 max_length / min_length 函数

长度比较利用 mb_internal_encoding() 和 mb_strlen() 函数
发表于 2010-8-3 15:51:39 | 显示全部楼层
//return (mb_strlen($str) > $val) ? FALSE : TRUE;                       
return ((strlen($str) + mb_strlen($str,'UTF8'))/2 > $val) ? FALSE : TRUE;
发表于 2010-8-4 17:57:16 | 显示全部楼层
使用回调函数比较好,想怎么处理都行

本版积分规则