文字列の一部を取得する mb_substr の動作について

全角半角が混在する文字列を操作する場合の実行結果を確認する。
文字列の文字コードUTF-8 とする。

<?php
$string = 'AあBいCDうEえFおG';

// 予想では「AあBいC」が抜き出される
$after = mb_substr($string, 0, 5);
printf('<p>文字コードを指定しない場合: %s</p>', $after);

$after = mb_substr($string, 0, 5, 'UTF-8');
printf('<p>文字コードを指定した場合: %s</p>', $after);
?>

実行結果。

文字コードを指定しない場合: AあB
文字コードを指定した場合: AあBいC

マルチバイトの場合、文字列の文字コードを指定した方がいい。