[PHP-users 23544]Re: mb_strimwidth と utf-8

Makoto Banba banban @ chuo-gr.co.jp
2004年 11月 5日 (金) 09:38:07 JST


番場です。

マニュアルを注意深く読むと、
http://www.php.net/manual/ja/function.mb-strwidth.php

「マルチバイト文字はシングルバイト文字の倍の幅となります」

という記述のとおり、バイト単位で戻す関数では無いようです。

> echo strlen('あいうえおかきくけこ');  => 30
> echo mb_strwidth('あいうえおかきくけこ','UTF-8'); => 20

なので、これは正しいように思います。

やりたいことは、UTF-8 の PostgreSQL DB の varchar(256)
に、ぎりぎりで切り捨てた文字列を入れたいというもので、
マルチバイトの半端なバイトが入らないようにしたいと思って
います。省略した証の「...」も必要。

ですから、mb_strimwidth のバイト単位版があれば良いという
ことですね。この関数は、見た目の幅を整える表示用に使うの
だと思います。

どなたか、UTF-8 の文字列をバイト単位で丸める方法をご存知
の方はいらっしゃいませんでしょうか?

--
 番場



PHP-users メーリングリストの案内