ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PHP:文字列のバイト数で処理を分ける方法

文字コード変換をしてバイト数を判定しました。

f:id:AJYA:20150529054801j:plain
photo credit: via photopin (license)

文字列が特定のバイト数を超えた場合、処理を切り分けたくて以下のようなコードを作成しました。

$work= "12あいうえおかきくけこさしすせそたちつてと漢字混合";
$workSJIS = mb_convert_encoding($work, "SJIS-win", "UTF-8");
$workSJISLen = strlen($workSJIS);
if($workSJISLen > 44) {
    // 特定のバイト数を超えた場合の処理
}

UTF-8のまま処理するとバイト数の計算が面倒なことになりそうだったので、UTF-8からShift-JISに変換して判定しました。
strlen()はバイト数、mb_strlen()が文字数ということをすっかり忘れていて、最初思った通り動作しなくて悩みました。