wp_specialchars_decode() │ WP 2.8.0
Конвертирует (декодирует) HTML сущности в их HTML символы. Изменяет только: &, <, >, ", '
Если нужно наоборот кодировать символы в сущности, используйте esc_html()
Имейте в виду, что эта функция декодирует не все сущности. Например, она не декодирует –
(–).
Если нужно декодировать все символы, используйте html_entity_decode().
1 раз — 0.000094 сек (очень быстро) | 50000 раз — 1.08 сек (быстро)
Хуков нет.
Возвращает
Строку
. Декодированный текст без HTML сущностей.
Использование
wp_specialchars_decode( $string, $quote_style );
- $string(строка) (обязательный)
- Текст, который нужно обработать.
- $quote_style(строка/число)
Определяет, как декодировать кавычки. Может быть:
ENT_COMPAT
или 'double'
— изменять только двойные кавычки: ".
ENT_QUOTES
— изменять оба вида кавычек: " и '.
'single'
— изменять только одинарные кавычки: '.
ENT_NOQUOTES
— не трогает кавычки вообще.
По умолчанию: ENT_NOQUOTES
Примеры
#1 Заменим HTML сущности в привычные символы HTML
$string = <<<'TEXT'
амперсанд - & / & / &
одинарные кавычки - ' / '
двойные кавычки - " / " / "
больше - > / >
меньше - < / <
TEXT;
echo wp_specialchars_decode( $string, ENT_QUOTES );
/* выведет:
амперсанд - & / & / &
одинарные кавычки - ' / '
двойные кавычки - " / " / "
больше - > / >
меньше - < / <
*/
Список изменений
Код wp_specialchars_decode() wp specialchars decode
WP 6.5.2
function wp_specialchars_decode( $text, $quote_style = ENT_NOQUOTES ) {
$text = (string) $text;
if ( 0 === strlen( $text ) ) {
return '';
}
// Don't bother if there are no entities - saves a lot of processing.
if ( ! str_contains( $text, '&' ) ) {
return $text;
}
// Match the previous behavior of _wp_specialchars() when the $quote_style is not an accepted value.
if ( empty( $quote_style ) ) {
$quote_style = ENT_NOQUOTES;
} elseif ( ! in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) {
$quote_style = ENT_QUOTES;
}
// More complete than get_html_translation_table( HTML_SPECIALCHARS ).
$single = array(
''' => '\'',
''' => '\'',
);
$single_preg = array(
'/�*39;/' => ''',
'/�*27;/i' => ''',
);
$double = array(
'"' => '"',
'"' => '"',
'"' => '"',
);
$double_preg = array(
'/�*34;/' => '"',
'/�*22;/i' => '"',
);
$others = array(
'<' => '<',
'<' => '<',
'>' => '>',
'>' => '>',
'&' => '&',
'&' => '&',
'&' => '&',
);
$others_preg = array(
'/�*60;/' => '<',
'/�*62;/' => '>',
'/�*38;/' => '&',
'/�*26;/i' => '&',
);
if ( ENT_QUOTES === $quote_style ) {
$translation = array_merge( $single, $double, $others );
$translation_preg = array_merge( $single_preg, $double_preg, $others_preg );
} elseif ( ENT_COMPAT === $quote_style || 'double' === $quote_style ) {
$translation = array_merge( $double, $others );
$translation_preg = array_merge( $double_preg, $others_preg );
} elseif ( 'single' === $quote_style ) {
$translation = array_merge( $single, $others );
$translation_preg = array_merge( $single_preg, $others_preg );
} elseif ( ENT_NOQUOTES === $quote_style ) {
$translation = $others;
$translation_preg = $others_preg;
}
// Remove zero padding on numeric entities.
$text = preg_replace( array_keys( $translation_preg ), array_values( $translation_preg ), $text );
// Replace characters according to translation table.
return strtr( $text, $translation );
}
Cвязанные функции