ラボ > PHP:文字関連

PHP 指定文字以降を省略したい

手っ取り早いのは「mb_strimwidth()」。でも条件によっては望まない感じになる。

作成日:2017-12-06, 更新日:2017-12-06

基本

$str = 〇〇〇〇〇;
echo mb_strimwidth($str, 0, 10);

こんな感じでいけるけど全角が入っているとやたら短くなる。その他条件があるんだろうけど・・・面倒なんで自作するのが手っ取り早いと思う。

サンプル

function mbStrimWidth($str, $length=NULL, $trimmarker='...' ) {
  
  // 文字数の指定なければ全部返す
  if ( $length == NULL ) {
    return $str;
  }
  
  // 文字数の指定以下なら全部返す
  if ( mb_strlen($str) <= $length ) {
    return $str;
  }
  
  // 最初から文字数分取得して返す。
  return mb_substr($str, 0, $length) . $trimmarker;
}

$str = 〇〇〇〇〇;
echo mbStrimWidth($str, 10);