Get html translation table: примеры (PHP)
get_html_translation_table(int $table = HTML_SPECIALCHARS, int $flags = ENT_COMPAT | ENT_HTML401, string $encoding = "UTF-8"): arrayФункция get_html_translation_table возвращает таблицу преобразований, используемую внутренними функциями htmlspecialchars и htmlentities. Применяется для получения и модификации правил трансляции HTML-сущностей перед обработкой строк.
Функция принимает два необязательных аргумента:
- $table (int, необязательный) — определяет тип таблицы. Принимает константы
HTML_ENTITIESилиHTML_SPECIALCHARS. По умолчаниюHTML_SPECIALCHARS. - $flags (int, необязательный) — битовая маска из одной или нескольких констант, определяющих правила обработки кавычек и типа документа. Доступные константы:
ENT_COMPAT,ENT_QUOTES,ENT_NOQUOTES,ENT_SUBSTITUTE,ENT_DISALLOWED,ENT_HTML401,ENT_XML1,ENT_XHTML,ENT_HTML5. По умолчаниюENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401в PHP 8. - $encoding (string, необязательный) — строка, указывающая кодировку. Начиная с PHP 8, этот аргумент игнорируется и используется UTF-8.
Примеры использования
<?php
$table = get_html_translation_table(HTML_SPECIALCHARS);
print_r($table);
?>Array
(
["] => "
[&] => &
[<] => <
[>] => >
)<?php
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_NOQUOTES);
print_r($table);
?>Array
(
[&] => &
[<] => <
[>] => >
)<?php
$table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_HTML5);
echo count($table) . " элементов\n";
?>1511 элементов
Альтернативные функции в PHP
Функция преобразует специальные символы в HTML-сущности. Используется для безопасного вывода данных в HTML-контекст. Предпочтительнее для экранирования вывода.
Функция преобразует все символы, имеющие HTML-сущности. Используется реже, только при необходимости замены всех символов. Работает медленнее из-за большей таблицы преобразований.
Функция конвертирует строку из одной кодировки в другую, включая преобразование в HTML-сущности. Подходит для работы с различными кодировками.
Аналоги в других языках
import html
result = html.escape('<script>alert("test")</script>', quote=True)
print(result)<script>alert("test")</script>
function escapeHtml(str) {
const div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
console.log(escapeHtml('<div>"test"&</div>'));<div>"test"&</div>
Используется экранирование через функции вроде mysql_real_escape_string для запросов или обработка на уровне приложения.
Распространенные ошибки
<?php
// Использование ENT_COMPAT без учета одинарных кавычек
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_COMPAT);
$str = "'test'" . "\n" . '"test"';
$translated = strtr($str, $table);
echo $translated;
?>'test' "test"
<?php
$table = get_html_translation_table(HTML_SPECIALCHARS);
$table['a'] = '@'; // Бесполезно, символ 'a' не преобразуется
?>Изменение таблицы не влияет на работу htmlspecialchars, так как таблица генерируется при каждом вызове.
Изменения в PHP 8
В PHP 8 удален третий параметр $encoding. Теперь функция использует только кодировку UTF-8. Передача этого параметра вызывает предупреждение.
Значение по умолчанию для $flags изменено с ENT_COMPAT на ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
Расширенные примеры
<?php
function custom_escape(string $input, bool $escapeQuotes = true): string {
$flags = $escapeQuotes ? ENT_QUOTES : ENT_NOQUOTES;
$table = get_html_translation_table(HTML_SPECIALCHARS, $flags);
// Добавляем замену для символа новой строки
$table["\n"] = '<br>';
return strtr($input, $table);
}
echo custom_escape("Пример\nстроки с 'кавычками'");
?>Пример<br>строки с 'кавычками'
<?php
// Удаление символов, не входящих в таблицу преобразований
$table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, 'UTF-8');
$input = "Hello © Δ test ✓";
$filtered = strtr($input, array_fill_keys(array_keys($table), ''));
echo $filtered;
?>Hello © Δ test ✓
<?php
$table = get_html_translation_table(HTML_SPECIALCHARS);
// Добавление замены для символа евро
$table['€'] = '€';
$result = strtr("Цена: 100€", $table);
echo $result;
?>Цена: 100€
<?php
// Получение таблицы и создание обратного преобразования
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
$reverseTable = array_flip($table);
$encoded = "<div>Test</div>";
$decoded = strtr($encoded, $reverseTable);
echo $decoded;
?><div>Test</div>
PHP get_html_translation_table function comments
- Php get html translation table - аргументы и возвращаемое значение
- Функция php get_html_translation_table - описание
- get html translation table - примеры
- get html translation table - похожие методы на php
- get_html_translation_table на js, python, mysql
- get html translation table изменения php
- Примеры get_html_translation_table на php