2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelでブログの本文の続きを「...」にする方法

Last updated at Posted at 2020-01-23

{!! nl2br(e(str_limit(変数, 制限文字数))) !!}

で制限文字数から先の文章は「...」になります。

解説

nl2br

PHPの改行コードになります。(htmlで言う<br>
https://www.php.net/manual/ja/function.nl2br.php

e()

()内をエスケープさせます。

e関数は、PHPのhtmlspecialchars関数をdouble_encodeオプションにデフォルトでtrueを指定し、実行します。

https://readouble.com/laravel/5.7/ja/helpers.html (「e()」で文字検索してください。)

htmlspecialchars — 特殊文字を HTML エンティティに変換する

エスケープ処理に関してはこちらを参照
https://qiita.com/n_hirai/items/df0a21d2409ee47973e5

まあ要は記号を特殊文字に変換させることです。そうすることによってユーザーが意図せず内部のプログラミングをいじってしまうことを防ぐことができます。
例えば、phpで $this->hensuu の値を取得する処理が書かれている場合、フォームでユーザーが「あああ<<<超えられない壁<<<いいい」とか打ってしまったら内部のプログラミングが<に反応してバグったらやばいからこの処理を使うのです。(もっと良い例えありませんか・・・?)

str_limit(変数、制限文字)

Str::limitでも行けます。繰り返しになってしまいますが、制限文字数から先の文章は「...」になります。
なんか最初からこうなってるみたいです。

str_limit関数は、指定した長さへ文字列を切り詰めます。

https://readouble.com/laravel/5.7/ja/helpers.html (「str_limit」で文字検索してください。)

{!! !!}

これでエスケープから逃れることができます。
通常Laravelで使われるblade構文の {} はhtmlからエスケープしてphp処理を行う際に使われるものでした。
それを「!!」にすることで否定系にしているのでhtmlとして処理されます。
中の処理が終了したらhtmlとして出力させようとしています。

個人的に

なにこれ解説むっず。本当に合ってんのかこれ。
でも使ってみると結構便利なので使ってみてください。何かあればコメントお願いします><

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?