日本語(マルチバイト文字)のワードラップ (wordwrap)処理 : PHP | ベンチャー企業 CIO: 池谷 義則ブログ&経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

ベンチャー企業 CIO: 池谷 義則ブログ&経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

SKYAVY, INC. CIOの池谷義則のブログ & ベンチャー企業 & 経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

メーラーをPHPで作成するとき、よくあるのがワードラップ。

PHPにはよくあるマルチバイト用のメソッド mb_ がなぜかワードラップではないようです。
なので、少々面倒なプログラムを書かなければならない。以下がそのスクリプト

$tmpBody = $vars['body'];
$vars['body'] = "";
$n = 35;
for($i=0; $i<mb_strlen($tmpBody, "UTF-8"); $i+=$n){
$wk = mb_substr($tmpBody, $i, $n, "UTF-8");
$vars['body'] .= "$wk\r\n";
}

これは、私が書いたメーラーからの書き出しなので、少々無駄なものも含まれていますが、適当に変更して利用してくれればと思います。

一応、簡単な解説を・・・

$n には、ワードラップをさせたい文字数を代入。

mb_substr メソッドは、サーバーの内部エンコーディングをUTF-8にしていないと、UTF-8として文字を処理してくれないので、最後のパラメーターに "UTF-8"を入れる。