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