全角と半角が混在した文字列を切り取る場合はmb_strimwidth()が便利

例えば半角5文字分切り取りたい場合、「あいう」だと半角6文字分になってしまうので、その場合は「あい」のみ切り取る、という処理をするんだけど、それがめんどくてどうしようと思っていたらmb_strimwidth()で解決できることが分かった。

この関数を使うと、全角1文字を2文字としてカウントしたうえで、指定した文字数を超えないように切り取ってくれる。

<?php
echo mb_strimwidth("あいう", 0, 5, "", "UTF-8");

結果

あい