wp_kses_post()

Санитизирует содержимое для разрешенных HTML-тегов для контента записи
Функция WordPress
INT 2.9.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Создание безопасного контента с помощью wp_kses_post()
  4. Очистка HTML-тегов с помощью wp_kses_post()
  5. Проверка наличия разрешенных атрибутов с помощью wp_kses_post()
  6. Удаление неразрешенных тегов с помощью wp_kses_post()
  7. Вопросы и ответы
  8. Какие HTML-теги разрешены в функции wp_kses_post()?
  9. Какие атрибуты HTML-тегов сохраняются при использовании функции wp_kses_post()?
  10. Как работает функция wp_kses_post() с вложенными HTML-тегами?
  11. Какие специальные символы экранируются при использовании функции wp_kses_post()?
  12. Какие типы содержимого обрабатывает функция wp_kses_post()?
  13. Как использовать функцию wp_kses_post() для удаления всех HTML-тегов из содержимого поста?
  14. Как использовать функцию wp_kses_post() для разрешения только определенных HTML-тегов и атрибутов?
  15. Как обрабатывается содержимое, содержащее недопустимые HTML-теги, при использовании функции wp_kses_post()?
  16. Какие проблемы могут возникнуть при использовании функции wp_kses_post() и как их решить?
  17. Связанные элементы

Описание функции

Функция wp_kses_post() используется для фильтрации содержимого поста и разрешения только разрешенных HTML-тегов и атрибутов. Она предназначена для безопасного вывода содержимого, чтобы предотвратить внедрение вредоносного кода или исполнение скриптов.

Использование

wp_kses_post( string $data ): string

Функция wp_kses_post() принимает один обязательный параметр — строку $data, которая представляет собой содержимое поста, которое нужно отфильтровать.

  • $data (string) — Обязательный. Содержимое поста для фильтрации.

Функция возвращает отфильтрованное содержимое поста с разрешенными HTML-тегами и атрибутами.


$content = "<script>alert('Hello, World!');</script> <p>This is a paragraph.</p>";
$filtered_content = wp_kses_post($content);
echo $filtered_content;

В данном примере переменная $content содержит строку с вредоносным скриптом и абзацем. Функция wp_kses_post() фильтрует содержимое и удаляет скрипт, оставляя только разрешенные HTML-теги и атрибуты. Затем отфильтрованное содержимое выводится с помощью echo.

Примеры использования

Создание безопасного контента с помощью wp_kses_post()


$content = '<script>alert("Hello, world!")</script>';
$safe_content = wp_kses_post( $content );
echo $safe_content;

Результат:


<script>alert("Hello, world!")</script>

Комментарий: Функция wp_kses_post() принимает строку с контентом и фильтрует ее, разрешая только разрешенные HTML-теги и атрибуты. В данном примере, входной контент содержит скрипт, который не является разрешенным тегом, поэтому он остается без изменений.

Очистка HTML-тегов с помощью wp_kses_post()


$content = '<strong>Hello, <em>world!</em></strong>';
$clean_content = wp_kses_post( $content );
echo $clean_content;

Результат:


<strong>Hello, <em>world!</em></strong>

Комментарий: В данном примере, входной контент содержит разрешенные теги <strong> и <em>. Функция wp_kses_post() не изменяет эти теги и возвращает их без изменений.

Проверка наличия разрешенных атрибутов с помощью wp_kses_post()


$content = '<a href="https://example.com" target="_blank">Click here</a>';
$filtered_content = wp_kses_post( $content );
echo $filtered_content;

Результат:


<a href="https://example.com" target="_blank">Click here</a>

Комментарий: В данном примере, входной контент содержит разрешенный тег <a> с атрибутами href и target. Функция wp_kses_post() не изменяет эти атрибуты и возвращает их без изменений.

Удаление неразрешенных тегов с помощью wp_kses_post()


$content = '<script>alert("Hello, world!")</script><p>This is a paragraph.</p>';
$filtered_content = wp_kses_post( $content );
echo $filtered_content;

Результат:


<p>This is a paragraph.</p>

Комментарий: В данном примере, входной контент содержит неразрешенный тег <script> и разрешенный тег <p>. Функция wp_kses_post() удаляет неразрешенный тег и возвращает только разрешенный тег без изменений.

Вопросы и ответы

Какие HTML-теги разрешены в функции wp_kses_post()?

Функция wp_kses_post() позволяет использовать следующие HTML-теги:

  • <a> — ссылки
  • <abbr> — сокращения
  • <acronym> — акронимы
  • <b> — жирный текст
  • <blockquote> — цитаты
  • <cite> — цитируемый текст
  • <code> — код
  • <del> — перечеркнутый текст
  • <em> — выделенный текст
  • <i> — курсивный текст
  • <q> — встроенная цитата
  • <s> — перечеркнутый текст
  • <strike> — перечеркнутый текст
  • <strong> — выделенный жирным текст

Какие атрибуты HTML-тегов сохраняются при использовании функции wp_kses_post()?

Функция wp_kses_post() сохраняет следующие атрибуты HTML-тегов:

  • class — класс элемента
  • id — идентификатор элемента
  • title — заголовок элемента
  • href — ссылка
  • src — путь к ресурсу

Как работает функция wp_kses_post() с вложенными HTML-тегами?

Функция wp_kses_post() обрабатывает вложенные HTML-теги, сохраняя разрешенные теги и атрибуты. Например, если входной текст содержит следующий код:


<div class="container">
  <p>Some text</p>
</div>

То функция wp_kses_post() вернет:


<div class="container">
  <p>Some text</p>
</div>

Таким образом, функция сохраняет вложенность и структуру HTML-кода, фильтруя только неразрешенные теги и атрибуты.

Какие специальные символы экранируются при использовании функции wp_kses_post()?

Функция wp_kses_post() экранирует следующие специальные символы:


& (амперсанд)
< (меньше)
> (больше)
" (двойная кавычка)
' (одинарная кавычка)

Какие типы содержимого обрабатывает функция wp_kses_post()?

Функция wp_kses_post() обрабатывает содержимое поста, включая HTML-теги и атрибуты.

Как использовать функцию wp_kses_post() для удаления всех HTML-тегов из содержимого поста?

Для удаления всех HTML-тегов из содержимого поста с использованием функции wp_kses_post() необходимо передать содержимое поста в качестве аргумента:


$content = wp_kses_post( $post_content );

Как использовать функцию wp_kses_post() для разрешения только определенных HTML-тегов и атрибутов?

Функция wp_kses_post() используется для фильтрации содержимого поста, разрешая только определенные HTML-теги и атрибуты. Это позволяет сохранить безопасность и предотвратить внедрение вредоносного кода.

Для использования функции wp_kses_post() необходимо передать ей строку с содержимым поста, которое нужно отфильтровать. Функция вернет отфильтрованное содержимое с разрешенными HTML-тегами и атрибутами.

Пример использования функции wp_kses_post():


$content = '<script>alert("Hello, World!");</script>';
$filtered_content = wp_kses_post( $content );
echo $filtered_content;

В данном примере функция wp_kses_post() фильтрует содержимое переменной $content, разрешая только разрешенные HTML-теги и атрибуты. В результате будет выведено безопасное содержимое без вредоносного кода.

Как обрабатывается содержимое, содержащее недопустимые HTML-теги, при использовании функции wp_kses_post()?

Если содержимое, переданное в функцию wp_kses_post(), содержит недопустимые HTML-теги, то эти теги будут полностью удалены из содержимого. Это позволяет избежать возможных уязвимостей и сохранить безопасность.

Пример обработки содержимого с недопустимыми HTML-тегами:


$content = '<script>alert("Hello, World!");</script><p>This is a paragraph.</p>';
$filtered_content = wp_kses_post( $content );
echo $filtered_content;

В данном примере функция wp_kses_post() удалит недопустимый HTML-тег <script> из содержимого переменной $content. Результатом будет безопасное содержимое только с разрешенными HTML-тегами и атрибутами.

Какие проблемы могут возникнуть при использовании функции wp_kses_post() и как их решить?

При использовании функции wp_kses_post() могут возникнуть следующие проблемы:

  • Некорректная фильтрация содержимого. Если функция неправильно определит разрешенные HTML-теги и атрибуты, то может быть удалено слишком много содержимого или разрешено содержимое, которое должно быть отфильтровано. Для решения этой проблемы необходимо внимательно проверить список разрешенных HTML-тегов и атрибутов.
  • Потеря форматирования. Функция wp_kses_post() может удалить некоторые HTML-теги, которые отвечают за форматирование текста, такие как <p> или <br>. Для решения этой проблемы можно использовать другие функции WordPress для форматирования текста, например, wpautop().

Функция wp_kses_post() позволяет фильтровать содержимое поста, разрешая только определенные HTML-теги и атрибуты. Это важный механизм для обеспечения безопасности и предотвращения внедрения вредоносного кода. При использовании этой функции необходимо быть внимательным и проверить список разрешенных HTML-тегов и атрибутов, чтобы избежать неправильной фильтрации или потери форматирования.

Связанные элементы

  • Функция wp_kses(): Фильтрует содержимое, разрешая только разрешенные HTML-теги и атрибуты.
  • Функция wp_kses_allowed_html(): Возвращает массив разрешенных HTML-тегов и атрибутов.
  • Функция wp_kses_attr(): Фильтрует содержимое атрибута HTML, разрешая только разрешенные атрибуты.
  • Функция wp_kses_bad_protocol(): Удаляет небезопасные протоколы из URL.
  • Функция wp_kses_bad_protocol_once(): Удаляет небезопасные протоколы из URL, но только один раз.
  • Функция wp_kses_check_attr_val(): Проверяет значение атрибута на наличие небезопасных протоколов.
  • Функция wp_kses_decode_entities(): Декодирует HTML-сущности в их исходные символы.
  • Функция wp_kses_hair(): Разбирает строку HTML-тега на составляющие.
Обсуждение