WP_SPECIALCHARS_DECODE() │ WP 2.8.0
Функция wp_specialchars_decode() помогает преобразовывать HTML-символы обратно в символы, которые вы видите на экране. Это полезно, когда нужно отобразить текст, который содержит специальные символы, такие как &, <, >, ", и '.
Основные моменты
- Переводит:
&,<,>,", и'. - Параметр $quote_style: можно задать как
ENT_COMPAT, чтобы декодировать только", илиENT_QUOTES, чтобы декодировать и"и'. По умолчанию используетсяENT_NOQUOTES, который ничего не декодирует. - Производительность:
- Один раз — 0.000094 сек (очень быстро)
- 50000 раз — 1.08 сек (быстро)
- Хуки: нет.
Возвращаемое значение
Функция возвращает строку с декодированным текстом без HTML-сущностей.
Как использовать
Чтобы использовать функцию, вызывайте её так:
wp_specialchars_decode( $text, $quote_style );
Где:
$text(string) (обязательный) — текст, который нужно декодировать.$quote_style(string|int) — указывает, как обрабатывать кавычки. Значения могут быть:ENT_COMPAT— декодировать только двойные кавычки.ENT_QUOTES— декодировать как одинарные, так и двойные кавычки.ENT_NOQUOTES— не декодировать кавычки. (По умолчанию)
Примеры использования
Пример 1: Замена HTML-сущностей на привычные символы
$string = <<<'TEXT'
ampersand - & / & / &
one quote - ' / '
double quotes - " / " / "
more - > / >
less - < / <
TEXT;
echo wp_specialchars_decode( $string, ENT_QUOTES );
Вывод будет:
ampersand - & / & / &
one quote - ' / '
double quotes - " / " / "
more - > / >
less - < / <
Обратите внимание, что эта функция не декодирует все сущности. Например, она не декодирует – (–). Если вы столкнётесь с такой проблемой, попробуйте использовать функцию html_entity_decode().
Изменения
- С версии 2.8.0: Функция была добавлена.
Исходный код функции
function wp_specialchars_decode( $text, $quote_style = ENT_NOQUOTES ) {
$text = (string) $text;
if ( 0 === strlen( $text ) ) {
return '';
}
// Если в строке нет сущностей, ничего не делаем.
if ( ! str_contains( $text, '&' ) ) {
return $text;
}
// Устанавливаем стиль кавычек по умолчанию.
if ( empty( $quote_style ) ) {
$quote_style = ENT_NOQUOTES;
} elseif ( ! in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) {
$quote_style = ENT_QUOTES;
}
// Таблица замен
$single = array(
''' => ''',
''' => ''',
);
$double = array(
'"' => '"',
'"' => '"',
'"' => '"',
);
$others = array(
'<' => '<',
'>' => '>',
'&' => '&',
);
// Формируем конечную таблицу перевода в зависимости от $quote_style.
if ( ENT_QUOTES === $quote_style ) {
$translation = array_merge( $single, $double, $others );
} elseif ( ENT_COMPAT === $quote_style || 'double' === $quote_style ) {
$translation = array_merge( $double, $others );
} elseif ( 'single' === $quote_style ) {
$translation = array_merge( $single, $others );
} elseif ( ENT_NOQUOTES === $quote_style ) {
$translation = $others;
}
// Убираем нули в числовых сущностях и заменяем символы.
return strtr( preg_replace( array_keys( $translation ), array_values( $translation ), $text ) );
}
Заключение
Функция wp_specialchars_decode() — это простое и эффективное решение для работы с HTML-сущностями в тексте. Применяйте её, когда нужно показать текст с символами, которые обычно заменяются на сущности, чтобы они отображались правильно на вашем сайте.