PHPまたはJavaScriptで文字列を切り詰める方法

ある一定以上の文字幅になったら切り詰めて表示する方法を調べたメモ。サーバーサイド(PHP)でやる場合はmb_strimwidthという関数が標準で用意されている。

mb_strimwidthは半角文字を1、全角文字を2として幅を計算しているので、気をつけないといけないのはプロポーショナルフォント(Verdana, sans-serifなど)を使っている場合は、思い通りの幅に収まらない場合がある。

特にアルファベットの半角大文字を使った場合にズレが大きくなる。(「W」とか)

これを解決するためには、等幅(等角)フォントを使う必要がある。CSSで指定する場合は次のような感じ。

font-family: monospace;

もう一つの方法はJavaScript(クライアントサイド)で横幅を判断して切り詰める方法。下記サイトが詳しい。

JavaScript で幅に合わせて文字列を切りつめる

jQueryでそれらしいプラグインがありそうだけど、時間があったら今度調査。