- ベストアンサー
○○文字以上の文字列を「...」のように省略して表示させるために活用できる関数は?
$mymessage = "テキストエリアなどから登録されたレコードのように、\n MySQLから取り出した日本語データが非常に長文の場合、\n 初めの全角30文字までは改行を無視して表示、\n それ以上は一律に三点リーダ「...」で省略表示\n するにはどうしたらいいですか?" この$mymessageを if (strlen($mymessage) > 60 ){ omit_over60character ($mymessage, 60); } みたいにできる関数があればいいのでしょうが。 ここでいう、omit_over60characterみたいな関数はありますか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
mbstringが有効なら if(mb_strlen($mymessage) > 30){ $mymessage = mb_substr($mymessage,0,30) ."..."; } mbstringが無効なら if(strlen($mymessage) > 60){ $mymessage = substr($mymessage,0,60) ."..."; }
その他の回答 (1)
- tecinfo
- ベストアンサー率52% (32/61)
回答No.2
mb_strimwidth関数の方が、一行でスッキリ書けるようです。 $mymessage = mb_strimwidth($mymessage, 0, 60, "..."); まぁ、mb_substrで十分実装可能ですが。。。
質問者
お礼
tecinfoさん、#1さんとは異なるアプローチによる解法 ありがとうございました。 確かに一行で済んだほうがすっきりしますね。 大変勉強になりました。
お礼
wish46さん、ご教示ありがとうございました。 mbstringは有効になっているので、 今回は前者で解決しました。大変助かりました。