- Опубликовано: 26 фев 2025
- 70
Вывод неэкранированных данных в Laravel Blade-шаблонах
В Laravel Blade-шаблонах синтаксис {!! !!}
используется для вывода неэкранированных данных. То есть, в отличие от привычных двойных фигурных скобок {{ }}
, которые автоматически экранируют HTML (преобразуют специальные символы в HTML-сущности для защиты от XSS-атак), конструкция {!! !!}
выводит данные “как есть”.
Пример:
<!-- Экранированный вывод -->
{{ $content }}
<!-- Неэкранированный вывод -->
{!! $content !!}
- Если в переменной
$content
будет находиться HTML-разметка (например,"<strong>Текст</strong>"
), то в случае{{ $content }}
Blade автоматически преобразует"<"
и">"
в соответствующие HTML-сущности, и браузер покажет строку вида:<strong>Текст</strong>
. - Если же использовать синтаксис
{!! $content !!}
, то страница выведет HTML-разметку «как есть», и в итоге будет отображён уже отформатированный текст: Текст. Однако следует помнить, что при использовании{!! !!}
вы берёте на себя ответственность за безопасность и корректность данных, поскольку теперь они не фильтруются и не экранируются автоматически. Если данные поступают из ненадёжных источников (например, ввод пользователей), это может привести к уязвимостям, в частности XSS-атакам. Поэтому использовать{!! !!}
нужно только в тех случаях, когда вы уверены в безопасности содержимого.
Была статья полезной: