[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 メーリングリストの案内