PHP プログラミング

【PHP】文字列の長さの取得とバイト数の取得

文字数の取得とバイト数の取得

文字数の取得


$str = "こんにちは";

// 文字数を取得
$result = mb_strlen($str);

// 出力 var_dump($result);

出力結果


int(5)

バイト数の取得


$str = "こんにちは";

// バイト数
$result = strlen($str);

// 出力 
var_dump($result);

出力結果


int(15)

出力結果を見るとなんと「15バイト」でした。
「10バイト」じゃない???
半角文字列が「1バイト」、全角文字列が「2バイト」なんて単純に考えていましたが、
PHPのstrlenはそう単純ではないようです・・・。

どうしたことかと思い調べてみると
文字コードが「UTF-8」の場合、一文字「3バイト」としてカウントされるようです。
「Shift_JIS」の場合、全角文字列がしっかりと「2バイト」としてカウントされるようです。
なので、「UTF-8」から「Shift_JIS」に変換した上でバイト数をカウントしてあげましょう。

文字コードを変更してバイト数の取得


$str = "こんにちは";

// 文字コードを「UTF-8」から「Shift_JIS」へ変換してからバイト数を取得
$result = strlen(mb_convert_encoding($str, 'SJIS', 'UTF-8') );

// 出力 var_dump($result);

出力結果


int(10)

ポイント

文字コードを「Shift_JIS」に変換してバイト数を取得することで、 全角文字列を「2バイト」としてカウントしてもらえることを覚えておきましょう。

  • この記事を書いた人
  • 最新記事

-PHP, プログラミング

© 2022 みるはぴ.com