BLOG
25年新卒 WEBエンジニア インターンシップ 受付中

[PHP] 指定の幅で文字列をまるめる関数 mb_strimwidth

更新日:2014/07/04

「30文字以上の場合は、30文字にして最後に”…”をつける」
という風にしたい場合はけっこうあります。
本文を抜粋表示したい時などです。

しかし、『30文字以上はまるめる』という時に、本当にやりたいこととしては、
『指定の枠に収まらない文字をカットする』
ということです!

『指定の枠に収まらない文字をカットする』がやりたい時に、
「30文字でまるめる」という風に文字数で処理するのは問題があります。
半角英数字と全角文字の表示サイズが違うので、
全角文字30文字と半角文字30文字ではかなり長さが変わってきます。
結果、予期せぬ表示くずれが発生したり、逆にスカスカな見た目になったりしかねません。

そこで、mb_strimwidth という関数を利用します。
これは、文字数ではなく幅を考慮して文字列をカットしてくれます。

しかも!!!
指定の文字幅より長い場合だけ、カットして最後に任意の文字列を付けてくれます!
指定の文字幅より短い場合は後ろに文字列を付けません。
お利口ですね。

実際の処理と結果は以下の通りです。

mb_substr との比較(下がstrimwidth)

mb_strimwidth01

mb_strimwdith 関数を利用した場合は、だいたい同じ幅にまるめられていることが分かります。

南本貴之

FOLLOW US