StringValidatorのマルチバイト対応について

こんにちはshuwattoです。

StringValidatorの文字数計算がstrlenになっていて、

マルチバイトだと文字数を正確に計算できないので、バグレポを出したのですが、Qiangからの返事は「php.iniでstr系関数をmb_str系関数に置き換える設定をすればすむので修正しない」ということでした。

http://code.google.c…s/detail?id=329

ご丁寧にphp.iniがそういう設定になっている環境ばかりだといいのですが、そういうわけでもないので

・FWに手を入れる

・自分でバリデータを書く

・.htaccessで設定を変える

といったような方法を考えています。

将来的に日本で使われるバリデーションルールを自分で追加するなら、

2番目の方法がいいかと思うのですが、

皆さんはどういう対応をされていますか、ご意見をお聞かせください。

よろしくお願いします。

Quote

・FWに手を入れる

・自分でバリデータを書く

・.htaccessで設定を変える

といったような方法を考えています。

将来的に日本で使われるバリデーションルールを自分で追加するなら、

2番目の方法がいいかと思うのですが、

皆さんはどういう対応をされていますか、ご意見をお聞かせください。

FWに手を入れるのはFWアップデートの際に忘れてしまいそうですし、

htaccessを使うほどの事でもないので、

自作バリデータを書いて使ってます。

PHP6になれば、strlenでunicode文字数を問題なく数えられるようにできるようですが。。。

こんにちは、shuwattoです。

Quote

FWに手を入れるのはFWアップデートの際に忘れてしまいそうですし、

htaccessを使うほどの事でもないので、

自作バリデータを書いて使ってます。

レスありがとうございます。

iwasaki様を見習って私も自作バリデータにしようと思います。

Yiiは他のFWに比してi18nに力を入れているという認識だったのですが、

やはり英語以外で使うにはいろいろ工夫する必要がありますね。

yii1.1.4使ってます

例えば、array(‘title’, ‘length’, ‘max’=>50, ‘encoding’ => ‘utf8’),

と書くmb_strlenが適用されるみたいです ( 'utf8’が正しいのかはわかりませんが )

追加

1.1.7以降はmb_strlenがあればなにもしなくてもOKみたいですね

http://code.google.com/p/yii/source/browse/trunk/CHANGELOG#231