• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php4 SJISの環境で2バイト文字の扱い方)

php4 SJISの環境で2バイト文字の扱い方

このQ&Aのポイント
  • php4 SJISの環境で2バイト文字の扱いで悩んでいます。4バイト以内に正しく収める方法はありますか?
  • $test変数には「あaいbうえ」という文字があります。4バイト以内に正しく収める場合、次の4バイト取得時に読まなかった分から始めて取得する方法はありますか?
  • mb_系の関数は文字数で判定するため、今回の目的で使えません。何か良い方法はありますか?

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

  • ベストアンサー
回答No.1

自分もメールの chunk_split に mb版が欲しいと思っていました。 で、次のようなコードはどうでしょう。 <?php /** * Chunks a multibyte string to array of strings, each string is at most specifiled length in bytes. * * @param string $str Original string * @param int $chunkbyte Length of each chunk in bytes, should be longer than one multibyte character * @param strin $encoding Encoding of the input/output string */ function mb_byte_chunk_to_array($str, $chunkbyte = 76, $encoding = null){ $ret = array(); $pos = 0; $len = strlen($str); if(!$encoding){ $encoding = mb_internal_encoding(); } while(true){ $buf = substr($str, $pos, $chunkbyte); $buf = mb_convert_encoding($buf, $encoding, $encoding); if($buf == ''){ // for cases chunkbyte is too small $buf = substr($str, $pos); $buf = mb_substr($buf, 0, 1, $encoding); } if($buf == ''){ // reached to the end of string. break; } $pos += strlen($buf); $ret[] = $buf; } return $ret; } print_r(mb_byte_chunk_to_array("これは1つのテストです。", 5)); ?>

関連するQ&A