日本語(マルチバイト)を含んだ文字列のお尻を切り取る場合は、mb_strcut()を使用する。
なお、第四引数の内部エンコーディングは指定しないとテストではうまく行かなかった。
また、Smartyのプラグインとしてあるtrancateをマルチバイト対応しているものもあるようだ。
http://c-brains.jp/blog/wsg/07/06/14-160910.php
<?php
$mb_str = "HelloあいうえおABC";
$len = strlen($mb_str);
for ($i = 0; $i <= $len; $i++) {
echo mb_strcut($mb_str, 0, $i, 'UTF-8') , "\n";
}
?>