• ベストアンサー

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

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

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

  • ベストアンサー
  • wish46
  • ベストアンサー率78% (29/37)
回答No.1

mbstringが有効なら if(mb_strlen($mymessage) > 30){ $mymessage = mb_substr($mymessage,0,30) ."..."; } mbstringが無効なら if(strlen($mymessage) > 60){ $mymessage = substr($mymessage,0,60) ."..."; }

litton101
質問者

お礼

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

その他の回答 (1)

  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.2

mb_strimwidth関数の方が、一行でスッキリ書けるようです。 $mymessage = mb_strimwidth($mymessage, 0, 60, "..."); まぁ、mb_substrで十分実装可能ですが。。。

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

お礼

tecinfoさん、#1さんとは異なるアプローチによる解法 ありがとうございました。 確かに一行で済んだほうがすっきりしますね。 大変勉強になりました。

関連するQ&A