РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1050 of 1361 menu

Метод sanitizeFor

Метод sanitizeFor класса HtmlSanitizer выполняет очистку HTML-строки с учётом контекста, в котором эта строка будет выведена. Первым параметром передаётся контекст использования, вторым - очищаемая строка. Третьим необязательным параметром можно передать имя санитайзера.

Контекст задаётся строкой и определяет, какие теги и атрибуты будут разрешены. Например, для контекста 'default' разрешается безопасный набор HTML-тегов, а для 'empty' все теги удаляются, оставляя только текстовое содержимое.

Синтаксис

public function sanitizeFor(string $context, string $html, ?string $sanitizer = null): string

Пример

Давайте очистим HTML-строку с помощью санитайзера в контексте по умолчанию:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHtmlSanitizerHtmlSanitizerInterface; use SymfonyComponentRoutingAttributeRoute; class SanitizerController extends AbstractController { #[Route('/sanitize', name: 'sanitize_index')] public function index(HtmlSanitizerInterface $sanitizer): Response { $html = '<div>hello <script>alert(1)</script></div>'; $res = $sanitizer->sanitizeFor('default', $html); return new Response($res); } } ?>

Результат выполнения кода:

<div>hello </div>

Пример

Давайте очистим HTML-строку в контексте 'empty', который удаляет все теги и оставляет только текст:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHtmlSanitizerHtmlSanitizerInterface; use SymfonyComponentRoutingAttributeRoute; class SanitizerController extends AbstractController { #[Route('/sanitize-empty', name: 'sanitize_empty')] public function emptyContext(HtmlSanitizerInterface $sanitizer): Response { $html = '<b>abcde</b> <script>alert(1)</script>'; $res = $sanitizer->sanitizeFor('empty', $html); return new Response($res); } } ?>

Результат выполнения кода:

"abcde "

Пример

Давайте передадим третий параметр - имя санитайзера, определённого в конфигурации:

framework: html_sanitizer: sanitizers: app.article_sanitizer: allow_safe_elements: true allow_static_elements: true allow_relative_links: true

Теперь применим этот санитайзер через метод sanitizeFor:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHtmlSanitizerHtmlSanitizerInterface; use SymfonyComponentRoutingAttributeRoute; class SanitizerController extends AbstractController { #[Route('/sanitize-article', name: 'sanitize_article')] public function article(HtmlSanitizerInterface $sanitizer): Response { $html = '<p>article <a href="/user">user</a></p>'; $res = $sanitizer->sanitizeFor('default', $html, 'app.article_sanitizer'); return new Response($res); } } ?>

Результат выполнения кода:

<p>article <a href="/user">user</a></p>

Смотрите также

  • класс HtmlSanitizer,
    который очищает HTML-строки от опасного кода
  • метод sanitize,
    который очищает HTML без указания контекста
  • класс ExpressionLanguage,
    который компилирует и вычисляет выражения
  • класс Yaml,
    который парсит и генерирует YAML-строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить