こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

○○文字以上の文字列を「...」のように省略して表示させるために活用できる関数は?

$mymessage =
"テキストエリアなどから登録されたレコードのように、\n
MySQLから取り出した日本語データが非常に長文の場合、\n
初めの全角30文字までは改行を無視して表示、\n
それ以上は一律に三点リーダ「...」で省略表示\n
するにはどうしたらいいですか?"

この$mymessageを

if (strlen($mymessage) > 60 ){
omit_over60character ($mymessage, 60);
}

みたいにできる関数があればいいのでしょうが。
ここでいう、omit_over60characterみたいな関数はありますか。

投稿日時 - 2008-02-12 00:36:19

QNo.3767560

暇なときに回答ください

質問者が選んだベストアンサー

mbstringが有効なら

if(mb_strlen($mymessage) > 30){
$mymessage = mb_substr($mymessage,0,30) ."...";
}

mbstringが無効なら

if(strlen($mymessage) > 60){
$mymessage = substr($mymessage,0,60) ."...";
}

投稿日時 - 2008-02-12 08:51:11

お礼

wish46さん、ご教示ありがとうございました。
mbstringは有効になっているので、
今回は前者で解決しました。大変助かりました。

投稿日時 - 2008-02-12 21:09:50

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

mb_strimwidth関数の方が、一行でスッキリ書けるようです。

$mymessage = mb_strimwidth($mymessage, 0, 60, "...");

まぁ、mb_substrで十分実装可能ですが。。。

参考URL:http://jp2.php.net/manual/ja/function.mb-strimwidth.php

投稿日時 - 2008-02-12 11:07:59

お礼

tecinfoさん、#1さんとは異なるアプローチによる解法
ありがとうございました。

確かに一行で済んだほうがすっきりしますね。
大変勉強になりました。

投稿日時 - 2008-02-12 21:11:28

あなたにオススメの質問