PHPと言うより文字コードの質問になりますが、
UTF-8でマルチバイト文字列の長さを、日本語=2、英数字=1として
カウントしたいのですが、strlenはひらがな、カタカナ、漢字を
全て3バイトとカウントすると仮定しても大丈夫でしょうか?

<?php
$str = "日本1234語";
$n = mb_strlen($str);
$m = strlen($str);
for ($i = 0; $i <= $n; $i++) {
 $t = $i * 3 + $n - $i;
 if ($t == $m) {
  echo $i * 2 + ($n - $i);
  break;
 }
}
?>