以下の、PHP (4.2.0以降)版です。
#!/usr/bin/php <?php $count = function ($str) { $len = 0; foreach (preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY) as $chr) { if (mb_ereg_match("[ -~]", $chr)) { $len += 1; } else { $len += 2; } } return $len; }; echo $count("abcde") . "\n"; // 5 echo $count("ABCDE") . "\n"; // 5 echo $count("あいうえお") . "\n"; // 10 echo $count("aあ") . "\n"; // 3