PHP - Laravel - ビュー - 変数出力 {{ }} {!! !!}


 クラウディア


1. 概要
2. 記述
3. エスケープ
4. 展開しないようにするには
5. 参考サイト

1. 概要

 「.blade.php」の中で、変数を使って表示する方法について、記述します。

2. 記述

 変数は。

@php
$hogehoge = なにやら変数の設定
@endphp

{{ $hogehoge }}
 のように記述すると、変数値が出力されます。

3. エスケープ

 変数で、内部にタグを書いていたら、タグが展開されず、そのままタグがべたのもじとして表示されてしまったのでびっくり。  タグを含む変数は、ずばり。

{{ $hogehoge }}
 でなく

{!! $hogehoge !!}
 と記述するんですと。  実際、やってみて、うまくいきましたわ。  ただし、なにやら
この方法の場合、PHP の htmlspecialchars 関数は適用されないため、ユーザーが入力した情報を出力するのには XSS の危険性があるため向いていません。
 てなことが書いてあるのですが、現段階(2021年8月2日)でなんのことやらわかりませんので、そういうことに出くわしたときに、驚いて対応したいと思います。  ちなみに、タグを展開させないのも使い勝手があって、本サイトのように、ソースコードをそのまま書いているとき。  「C」言語系で、「#include」のかっこがエスケープされると、「#include」の先になにも表示されなくなるので。

@php
$text  = <<<EOT
#include <semaphore.h>

sem_t *sem_open(const char *name, int oflag, ...);
int sem_close(sem_t *sem);
int sem_unlink(const char *name);
EOT;
@endphp
{{ $text }}
 てな書き方をします。  (実は、上のテキストは、ソース上、複雑怪奇)

4. 展開しないようにするには

 また逆に、本ページのように「{{ $hogehoge }}」てな、テキストを「.blade.php」で記述して、変数展開させないようにするには?  その場合には。

@{{ $hogehoge }}
 と「{{ $hogehoge }}」の前に「@」を記述します。

5. 参考サイト

 本ページは、下記のページおよび「Gemini」伍長を参考にさせていただきました。
【Laravel】htmlを含む変数を表示させる方法【エスケープ】