dポイントプレゼントキャンペーン実施中!

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

この$mymessageを

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

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

A 回答 (2件)

mbstringが有効なら



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

mbstringが無効なら

if(strlen($mymessage) > 60){
$mymessage = substr($mymessage,0,60) ."...";
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/12 21:09

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



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

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

参考URL:http://jp2.php.net/manual/ja/function.mb-strimwi …
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/02/12 21:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!