mb_strlen()の罠

jqueryで入力文字数制限付入力フォームを作っていたのだが、なぜかcakephpでの文字数カウントと合わない。
cakeのヴァリデーションでは文字数をmb_strlen()でカウントしていたが、こいつが曲者。
文字コードがあってないとそもそもカウントできないが、今回は設定してあったので問題なかったが、改行コードが問題。
漢字は1文字としてカウントするが、改行コードは2文字としてカウントする。
たぶん、jsはCR+LFを1文字としてmb_strlen()は2文字として扱うのが原因と思われる。

cakeのcoreは変更したくないので、js側で改行の数をカウントして文字数にたすことにしました。

タイトルとURLをコピーしました