Когда использовать esc_html и когда использовать sanitize_text_field?

11

Кажется, что они выполняют почти одинаковую работу. Так...

Когда я должен использовать esc_html()вместо sanitize_text_field()?

Да, чувак
источник

Ответы:

19

esc_html() более или менее без потерь - он просто превращает разметку HTML в закодированный видимый текст, чтобы браузер не отображал ее как разметку.

Семантически это побег , поэтому он предназначен для безопасного вывода на страницу .

sanitize_text_field()однако фактически удаляет всю разметку HTML, а также лишние пробелы. Не оставляет ничего, кроме простого текста.

Семантически это дезинфицирует , поэтому оно предназначено для обеспечения сохранности ввода .

Rarst
источник
не лучше ли использовать esc_html как для вывода, так и для сохранения? В любом случае я не буду отображать какую-либо разметку ... так когда бы я использовал sanitize_text_field ()?
агаман
1
@yeahman "лучше" как? Они делают совершенно разные вещи. Отбрасывание разметки обычно используется для вещей, где разметка не ожидается, например, для формы, которая принимает имя.
Первое
Я имею в виду, что он хранит то, что пользователь видит и вводит ... как вы сказали, это без потерь ... (например, он вводит "тег <head> - это место, куда вы должны включить ваши CSS-файлы", он ожидает увидеть <head> в его пост). Для поля имени я бы управлял вводом через валидацию; не более ли подходит?
да
Меня интересуют различия между sanitize_text_field()иstrip_tags
миол
strip_tags используется в sanitize_text_field (), если я не ошибаюсь
да,