文字列の最初の n 文字を切り捨て、削除された文字がある場合は 3 つのドットを追加します。質問する

文字列の最初の n 文字を切り捨て、削除された文字がある場合は 3 つのドットを追加します。質問する

PHP で文字列の最初の n 文字を取得するにはどうすればよいですか? 文字列を特定の文字数にトリミングし、必要に応じて「...」を追加する最も速い方法は何ですか?

ベストアンサー1

//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;
}

おすすめ記事