WordPress как на ладони
wordpress jino

wp_specialchars_decode() WP 2.8.0

Конвертирует (декодирует) HTML сущности в их HTML символы. Изменяет только: &, <, >, ", '

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

✈ 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'
амперсанд - &amp; / &#038; / &#x26;
одинарные кавычки - &#039; / &#x27;
двойные кавычки - &quot; / &#034; / &#x22;
больше - &gt; / &#062; 
меньше - &lt; / &#060; 
TEXT;

echo wp_specialchars_decode( $string, ENT_QUOTES );

/* выведет:
амперсанд - & / & / &
одинарные кавычки - ' / '
двойные кавычки - " / " / "
больше - > / > 
меньше - < / < 
*/

Код wp specialchars decode: wp-includes/formatting.php WP 4.8.2

<?php
function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) {
	$string = (string) $string;

	if ( 0 === strlen( $string ) ) {
		return '';
	}

	// Don't bother if there are no entities - saves a lot of processing
	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( '&#039;'  => '\'', '&#x27;' => '\'' );
	$single_preg = array( '/&#0*39;/'  => '&#039;', '/&#x0*27;/i' => '&#x27;' );
	$double = array( '&quot;' => '"', '&#034;'  => '"', '&#x22;' => '"' );
	$double_preg = array( '/&#0*34;/'  => '&#034;', '/&#x0*22;/i' => '&#x22;' );
	$others = array( '&lt;'   => '<', '&#060;'  => '<', '&gt;'   => '>', '&#062;'  => '>', '&amp;'  => '&', '&#038;'  => '&', '&#x26;' => '&' );
	$others_preg = array( '/&#0*60;/'  => '&#060;', '/&#0*62;/'  => '&#062;', '/&#0*38;/'  => '&#038;', '/&#x0*26;/i' => '&#x26;' );

	if ( $quote_style === ENT_QUOTES ) {
		$translation = array_merge( $single, $double, $others );
		$translation_preg = array_merge( $single_preg, $double_preg, $others_preg );
	} elseif ( $quote_style === ENT_COMPAT || $quote_style === 'double' ) {
		$translation = array_merge( $double, $others );
		$translation_preg = array_merge( $double_preg, $others_preg );
	} elseif ( $quote_style === 'single' ) {
		$translation = array_merge( $single, $others );
		$translation_preg = array_merge( $single_preg, $others_preg );
	} elseif ( $quote_style === ENT_NOQUOTES ) {
		$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 according to translation table
	return strtr( $string, $translation );
}

Cвязанные функции

Из метки: esc_ (очистка валидация)

Еще из раздела: Форматирование

wp_specialchars_decode Комментариев нет

Здравствуйте, !

Ваш комментарий