役立つ情報
登録日: 2025-03-01   最終更新日: 2025-03-23

Laravel blade 内にHTMLを出力する方法

LaravelのBladeテンプレート内でHTMLを出力する方法はいくつかあります。
以下に代表的な方法を紹介します。

{!! !!} を使用する(エスケープなし)

Bladeでは、変数の出力時に{{ }}を使うとデフォルトでHTMLエスケープされますが、{!! !!} を使うことでエスケープせずにHTMLをそのまま出力できます。


{!! '<h1>こんにちは</h1>' !!}

出力結果


<h1>こんにちは</h1>

注意点

ユーザー入力を直接{!! !!}で出力すると、XSS(クロスサイトスクリプティング)攻撃のリスクがあるため、信頼できるデータのみを使用してください。

{{ }} を使用する(エスケープあり)

通常の{{ }}を使うと、HTMLはエスケープされるため、タグはそのまま表示されます。


{{ '<h1>こんにちは</h1>' }}

出力結果


<h1>こんにちは</h1>

@verbatim ディレクティブを使用する

Bladeのタグ{{ }}や@がそのままHTMLとして解釈されるようにするには、@verbatimを使います。


@verbatim
    <div>
        {{ これはBladeの影響を受けません }}
    </div>
@endverbatim

出力結果


<div>
    {{ これはBladeの影響を受けません }}
</div>

@php を使う

Blade内でPHPコードを実行し、その中で echo を使う方法もあります。


@php
    echo '<h1>こんにちは</h1>';
@endphp

出力結果


<h1>こんにちは</h1>

ただし、通常は{!! !!}を使う方がシンプルです。

カスタムコンポーネントを作る

もしHTMLを頻繁に出力するなら、Bladeコンポーネントを作成するのもおすすめです。

例:resources/views/components/html-output.blade.php


<div>{!! $content !!}</div>

出力結果


<x-html-output :content="'<strong>太字</strong>'" />

まとめ

方法 エスケープ 主な用途
{!! !!} なし 信頼できるHTMLを出力
{{ }} あり ユーザー入力などの出力
@verbatim そのまま Bladeの影響を受けたくない場合
@php なし PHPの直接記述
コンポーネント 選択可 繰り返し使う場合

Copyright 役立つ情報.net