指定した幅で文字列を丸める事ができるPHP関数『mb_strimwidth()』ですが、サーバー環境やソースの文字コードなどによっては文字化けを起こしてしまう場合があります。
対処方法は以下から。
$hoge = "Hello World"; echo mb_strimwidth($hoge, 0, 10, "..."); // Hello W... と出力 $moge = "こんにちはこんにちは"; echo mb_strimwidth($moge, 0, 10, "..."); // こん�... と出力されてしまう(文字化け)
mb_strimwidth関数はオプションで文字エンコーディングを指定出来ますが、省略した場合は内部文字エンコーディングが使用されます。
よって、ソースの文字コードとサーバーの内部文字エンコーディングが異なる場合など、文字化けが起きてしまいます。
対処方法は以下の様に記述します。
$hoge = "Hello World"; echo mb_strimwidth($hoge, 0, 10, "...", "UTF-8"); // Hello W... と出力 $moge = "こんにちはこんにちは"; echo mb_strimwidth($moge, 0, 10, "...", "UTF-8"); // こんに... と出力