UTF-8における「strlen」と「mb_strlen」の挙動について

この記事は約 1 分 で読むことができます。

PHPで使われる組み込み関数ですが、「strlen」と「mb_strlen」の違いは、前者は文字列のバイト数を数え、後者は文字列の文字数を数えるということなので、例えば「全角文字とハンカクモジ」のように全角と半角の文字が混在した場合の文字数のカウント数は、前者が「17」で後者が「12」という解釈でよいでしょうか?

 

UTF-8の文字コードの場合、日本語は1文字3バイトで扱われます。

また、半角カナは半角文字ではありますが、あくまで日本語なので
全角文字や漢字と同様に扱われます。

つまり、UTF-8では以下のようになります。

 半角英数字:1バイト
 全角文字(半角カナ含む):3バイト

したがって、「全角文字とハンカクモジ」という文字列の場合は、

 strlen「36」
 mb_strlen「12」

確かめるためのソースコードは以下のようになります。

<?php

$moji = ‘全角文字とハンカクモジ’;

echo strlen($moji);

echo ‘<br />’;

echo mb_strlen($moji, ‘utf-8’);

?>

UTF-8における「strlen」と「mb_strlen」の挙動について
この記事はあなたのお役に立てましたか?

この記事があなたのお役に立てましたら、
いいね!クリックをお願いします!

あなたも楽しくプログラミングを学んでみませんか?

コメントを残す