【Laravel】

bladeで表示文字数を制限して末尾を"..."や"...続きを読む"に変更する方法

Str::limit()で表示文字数を制限する

投稿日 2021/07/02 更新日 2021/07/02


こんにちは。当サイトの管理者「元木皇天」です。

今回はLaravelの文字表示についての記事です。

DBなどから取得した文字列が長く、そのまま表示するとレイアウトが崩れてしまうなどの理由から、表示する文字数を制限して、入りきらない分を”...”や”...続きを読む”のようにしたいことがあります。

今回はLaravelのbladeファイルで表示する文字数を制限して、末尾を"..."や"...続きを読む"に変更する方法について解説いたします。

環境
Laravel:バージョン8.48.2
PHP:バージョン7.4.13

やりたいこと

表示する文字数制限して、はみ出た文字を”...”または”...続きを読む”に変更する


実装イメージ

・制限前の文字列

 ABCDEFGHIJKLMNOPQRSTUVWXYZ

・10文字制限(末尾"...")

 ABCDEFGHIJ...

・10文字制限(末尾"...続きを読む")

 ABCDEFGHIJ...続きを読む


参考文献:Laravel 8.x 公式リファレンス

文字数制限をかける方法

Laravelで表示する文字数を制限するには、bladeファイル上に以下の記述をすることで制限することができます。

{{ Str::limit(第一引数, 第二引数, 第三引数) }}

第一引数:表示したい文字列(必須)
第二引数:表示したい文字数(必須)
第三引数:末尾に表示する文字列(任意)

では次の項で実際に使用してみましょう。

実例-文字数制限(…にする)

実際の例として文字数を10文字までしか表示させないようにします。

今回文字列制限をかける文字列は以下のアルファベットです。

ABCDEFGHIJKLMNOPQRSTUVWXYZ

Laravelのbladeに対して以下の記述をして表示文字数を制限します。補足ですが、第三引数を省略した場合、自動で”...”が末尾に追加されます。(第一引数に文字列を直接入れていますが、実際は変数が入ることが多いと思います。)

第三引数を省略する場合
{{ Str::limit('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10) }}
//表示文字列:ABCDEFGHIJ...

第三引数を省略しない場合
{{ Str::limit('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10, '...') }}
//表示文字列:ABCDEFGHIJ...

上記の場合、第三引数を設定してもしなくても同じ表示結果になります。

以下は実際にこのサイトで上記コードを実装した結果です。(当サイトはLaravelで作成されているので実行結果がそのまま出力されます。といっても、見た目上ではわからないと思いますが...。)


第三引数を省略する場合

ABCDEFGHIJ...

第三引数を省略しない場合

ABCDEFGHIJ...

実例-文字数制限(...続きを読むにする)

次は先ほどと同じように10文字制限をかけて、末尾を”...続きを読む”に変更してみましょう。

制限をかける文字列

ABCDEFGHIJKLMNOPQRSTUVWXYZ

実装方法は以下の通りです。

{{ Str::limit('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10, '...続きを読む') }}
//表示文字列:ABCDEFGHIJ...続きを読む

実際にこのサイトで実装して表示すると以下のようになります。(当サイトはLaravelで作成されているので実行結果がそのまま出力されます。といっても、これも見た目上ではわからないと思いますが...。)

ABCDEFGHIJ...続きを読む

まとめ

表示する文字数を制限したい場合は
{{ Str::limit() }}
を使用する

参考文献・おすすめ文献