備考欄の文字化け対策

備考欄にあるていど長い文を記入すると、メール文や、管理ページでの表示がところどころ文字化けします。デフォルトでは、半角80字ごとに半角空白が挿入されます。

この原因は、libraries/Trash.php の
function checkLengthOfTxt( $txt ){
return wordwrap( $txt, MAX_STR_LEN, " ", 1 );
}
の wordwrap がマルチバイト対応していないことによります。長い文字列を分割するのが目的のようです。

記入が日本語だけであれば無効化しても問題ないのですが、半角英数字をながながと打ち込まれると、それが改行されず、管理ページで表示枠が右へ果てしなく広がっていってしまいます。

半角英数字が長く続いたら分割する(半角空白を挿入する)という function にするのが最善と思い、やってみました。いろいろな方法が考えられますが、とりあえず下記のようなものに落ち着きました。
return wordwrap( $txt, MAX_STR_LEN, " ", 1 );

return preg_replace( "/[¥x21-¥x7E]{80}/", "$0"." ", $txt );
とします。

問題は、量指定子 {} に定数 MAX_STR_LEN を入れ込めないので、config/general.php で文字数を指定できないことですが、よしとします。
このページを印刷する
戻る