laravel5.1(PHP)で、テキストエリアの文字列を表示時に指定文字数で改行する方法


laravel5.1(PHP)で、テキストエリアの文字列を表示時に指定文字数で改行する方法

元のテキストエリアで改行を入れずに延々と書き続けると、ブラウザに横スクロールバーが出るくらい表示されてしまった!
word_wrapという関数があるけど、英数字しか対応してないので、UTF-8などマルチバイトでは、途中でぶった切られて役に立たない…。

とりあえず、PHPだけで対応してみた。

1, テキストエリアの文字列を取得
2, 各行に切り出して、配列に格納
3, n行目が指定の長さ以下なら何もしない
3, n行目が指定の長さ以上なら、指定の長さで分割
4, 最後に、改行コードで配列を結合して完成


えらい、泥臭いコーディングになってしまった…。



文字数だけでカウントしているので、
1, すべて半角文字の行
2, すべて全角文字の行
だと、結構な差があるな~。まあ、カーニング(文字によって横幅が違う。lとZ)の問題もあるし、完全一致は無理だな。