PHPでマルチバイト文字列をfold(折り返し)する関数が無いみたいなので作ってみました。必要な引数は対象文字列と折り返し幅(バイト)。オプションで改行コード、インデント文字列、文字コードが指定できます。
function mb_fold($str,$width,$cr="\n",$indent="",$encode=null) {
	$out = $indent;
	if(! isset($encode)) $encode = mb_internal_encoding();
	$lenmax = mb_strlen($str,$encode);
	$nowlen = 0;
	for ($i=0; $i<$lenmax; $i++) {
		$c = mb_substr($str,$i,1,$encode);
		$cw = mb_strwidth($c,$encode);
		if(($nowlen + $cw) > $width) {
			$out .= $cr . $indent . $c;
			$nowlen = $cw;
		} else {
			$out .= $c;
			$nowlen += $cw;
		}
	}
	return $out;
}

使い方はこんな感じ
$body .= mb_fold($data['hoge'],30,"\n","  ") ."\n";

たとえばテキストを整形して自動的にメールを送信するプログラムとかに使えます。なお禁則処理は特にしてないので、単純にバイト数で切っていくだけです。