1. ホーム
  2. php

[解決済み】文字列の最初のn文字を切り捨て、任意の文字が削除された場合は3つのドットを追加する

2022-03-25 21:49:08

質問

PHP で文字列の最初の n 文字を取得するにはどうすればよいですか?文字列を特定の文字数まで切り詰め、必要に応じて '...' を追加する最も手っ取り早い方法は何でしょう?

どのように解決するのですか?

//The simple version for 10 Characters from the beginning of the string
$string = substr($string,0,10).'...';

更新してください。

長さチェックの提案に基づく(また、トリミングされた文字列とトリミングされていない文字列の長さが同じであることを保証する)。

$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;

つまり、最大13文字の文字列が得られます。13文字(またはそれ以下)の通常の文字列か、10文字の後に'...'が続く文字列のどちらかです。

アップデート2

または機能として

function truncate($string, $length, $dots = "...") {
    return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}

アップデート3

この回答を書いてからしばらく経ちますが、実はもうこのコードを使うことはありません。私は、単語の途中で文字列が壊れるのを防ぐこの関数の方が好きです。 wordwrap 関数を使用します。

function truncate($string,$length=100,$append="…") {
  $string = trim($string);

  if(strlen($string) > $length) {
    $string = wordwrap($string, $length);
    $string = explode("\n", $string, 2);
    $string = $string[0] . $append;
  }

  return $string;
}