• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:続:日本語(マルチバイト)でのwordwrap処理)

日本語でのwordwrap処理に関する問題と解決方法

このQ&Aのポイント
  • 日本語の文字列を指定した字数で折り返す処理に関して、改行後の文字列先頭に「>」を付加する処理が不足している問題があります。
  • 現在のコードでは、追加部分の文字の拾い方が間違っており、改行が正しく検知されない可能性があります。
  • ローカルの環境がSJISであるため、mb関数が正しく動作していない可能性も考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

すみません、直接的回答ではないのですが、 私なら、元の部分が1行を処理するルーチンなので、 処理させる部分を変更するのではなく、 処理させる前に、処理できる形に変更する方法でやります。 $data; #データに改行が含まれている文字列 $list=preg_split("/\n/", $data);#改行で分解 $n=10; # 改行させる文字数 foreach($list as $line){ #foreachで一行ずつ処理させる $len=0;#以下元の部分のまま for($i=0;$i<mb_strlen($line);$i+=$len){ for($j=1;$j<=$n;$j++){ $wk=mb_substr($line,$i,$j); if(strlen($wk)>=$n) break; } $len=mb_strlen($wk); print ">$wk\n"; } } --------------------------------------------- 改行パターンがうまくマッチしない場合は \rや \r\nなどを試してみてください。 回答になってなくてすみません。

dokumori
質問者

お礼

いえいえ、すみませんなんて、とんでもない。 回答になってます。一発でいきました。 なるほど。配列にしてから一行ずつ処理していくわけですね。 preg_splitなんて関数知りませんでした。 助かっただけでなく、大変勉強になりました。 BLUEPIXYさん、度々ありがとうございました。

関連するQ&A