備忘録

気になったこと、調べたこと、わからなかったことなど..

【PHP】textareaとmb_strlenの改行コード

事象

テキストエリアに入力した文字数と、それをmb_strlen関数で数えた文字数が合わなかった。

原因

改行コードの取り扱いが違う。

詳細

mb_strlen関数は、CRLFの改行コードを2で返すそうです。
なので、受け取った文字列の改行コードを変換してあげてからmb_strlen関数に通してあげることで解決しました。

<?php
str_replace(array("\r\n", "\r"), "\n", 文字列);
?>
参考

mb_strlenと改行コードの罠 - Narusaseの日記 -ハニポってどうよ?(仮)-