[PHP-users 32509] マルチバイト文字を含む文字列のカットについて

吉野 康治 yoshino @ moulin.co.jp
2007年 8月 2日 (木) 11:51:46 JST


PHPにてサイト作成をしている者です。
僭越ですが質問させていただきます。


DBから取得したASCII文字・マルチバイト文字が混在した文字列を
ある一定のバイト数(ここでは仮に18バイトとします)を超えたら、
それ以降の文字はカットして、語尾に"・・・"を付加して表示したい
と考えております。
#すべて全角文字の場合では最大9文字まで、
#すべて半角文字の場合では最大18文字までということになります。
(ASCII文字=半角、マルチバイト文字=全角と考えます)

現在はmbsubstr()を使用して文字数を取得しているのですが、
この場合、仮に取得した文字列がすべてASCII文字だと
9文字(9バイト分)しか表示できず、上記の要件を満たせずにいます。
文字列をバイト数で取得すると、今度はどこにマルチバイト文字が
あるのかわかりません。

1.文字数ではなくバイト数で文字列の表示上限を決定したい
2.18バイト目が、あるマルチバイト文字の1バイト目であれば、それもカットしたい 

    (この場合、表示する文字は17バイトとなる)

以上の2点を満たせる処理方法や標準関数等を
ご存知の方、教えてください。

お手数をお掛けしますが、宜しくお願いします。



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