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'
амперсанд - & / & # 038; / & # x26;
одинарні лапки - ' / & # x27;
подвійні лапки - " / & # 034; / & # x22;
більше - > / & # 062;
менше - < / & # 060;
TEXT;
echo wp_specialchars_decode( $string, ENT_QUOTES );
/* виведе:
амперсанд - & / & / &
одинарні лапки - '/'
подвійні лапки - " / " / "
більше - > / >
менше - < / <
*/
список змін
wp specialchars decode WP 6.0.2
function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) {
$string = (string) $string;
if ( 0 === strlen( $string ) ) {
return '';
}
// Не треба, якщо не є предметом, - несуть багато процесів.
if ( strpos( $string, '&' ) === false ) {
return $string;
}
// Match the previous behaviour 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.
$string = preg_replace( array_keys( $translation_preg ), array_values( $translation_preg ), $string );
// Replace characters відповідно до translation table.
return strtr ($ string, $ translation);
}
Зв’язані функції