一回でPHPで文字をカットしつつ「…」等を追加したい時はこの方法

·

タイトルや紹介文、URLなど、様々な文字数が想定される場合、きちんと文字数での切り詰めをしておかないとレイアウトが崩れたりすることがある。

PHPで日本語の文字数カットには多くの場合mb_substrを使う方法が紹介されているが、文字を切り詰めた場合に「…」等を付加して元の文字が省略されていることを明示的にしたい場合、文字数のカウントをしておかないといけないためスマートとは言えない。

例)mb_substrを使う方法

最初にmb_strlenで文字数を数え、指定文字数よりも多い場合はmb_substrで切り詰める
そのまま使えるコードのサンプルは以下

$str = "ABCDEFG1023457890ABCDEFG1023457890";
$cut_num = 20;

if(mb_strlen($str) > $cut_num){
$str_cut = mb_substr($str,0,$cut_num,"UTF-8")."...";
}else{
$str_cut = $str;
}

省略した時の表示処理も含めたい場合はmb_strimwidthを使うといい。

そのまま使えるコードのサンプルは以下

$str = "ABCDEFG1023457890ABCDEFG1023457890";
$cut_num = 20;
$str_cut = mb_strimwidth($str,0,$cut_num,"...","UTF-8");

わずか一行で、指定文字数を越えた場合はカットして「…」を追加、指定文字内の場合はそのままとなる。