(PHP)mb_strwidthとmb_strimwidth


PHPで全角半角混じった文字のバイト数(≒幅)の処理のための関数のメモです。

shift-jisなら全角は2バイトと決め打ちしても良さそうですが、主流のUTF-8では全角は3バイト(一部2バイト)で、見た目とバイト数は一致しません。

mb_strwidthは全角文字(マルチバイト文字)は2、いわゆる半角英数は1で”文字列の幅”を返します。また、mb_strimwidthは同様に文字列の幅で切り取りを行います。第4引数に「・・・」などとすると、切り取った文字列のあとに「・・・」を足してくれます。(それくらいはPHPでもすぐにできるので、無くてもこまらない機能ですが。)

長さに関係なくレイアウトを維持したい場合などに有用でWeb向きの関数です。mb_strwidthで文字列の長さを確認して、mb_strimwidthで切り取るという感じで使うことが予想されます。ちなみにsubstrのように、後ろから何文字切り抜くというような使い方はできません。そのときはmb_substrを使うべきだと思います。

なお、エンコードの指定は確実に行いましょう。

リファレンス「mb_strwidth
リファレンス「mb_strimwidth

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

SPAM防止のため数字と漢数字の算数の計算をお願いします。 * Time limit is exhausted. Please reload CAPTCHA.