中文字符串长度的验证

Yii里面的Form和AR里对字符串长度的验证好像都是用strlen来判断的,但对于多字节的编码,utf8的数据库字段类型,这样的验证没法反映数据库中正确的定义的,不只是不是应该把这个检查换成mb_strlen呢,不知道这样会不会影响到别的地方。

因为mbstring是一个可选的PHP扩展,所以我们的验证只限于用strlen。有两种解决办法:一是你在配置php.ini里的mbstring时指明用mb函数来overload普通的string函数。这样strlen就自动变成mb的strlen了。另一种当然就是自己写验证器了。由于验证器可以是一个类,所以你可以在不同的项目里重用这个验证器。或许当PHP6出来时我们会考虑更多关于mb的东西。

Quote

因为mbstring是一个可选的PHP扩展,所以我们的验证只限于用strlen。有两种解决办法:一是你在配置php.ini里的mbstring时指明用mb函数来overload普通的string函数。这样strlen就自动变成mb的strlen了。另一种当然就是自己写验证器了。由于验证器可以是一个类,所以你可以在不同的项目里重用这个验证器。或许当PHP6出来时我们会考虑更多关于mb的东西。

可以说说第二种方法具体怎么做吗?怎么写验证器呢?

http://www.yiiframew…h_cn/form.model