функция since 2.8.0

wp_specialchars_decode()

Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.

Сигнатура

wp_specialchars_decode( string $text, string|int $quote_style = ENT_NOQUOTES ): string

Описание

В частности обрабатывает: &, , " и '.
$quote_style может быть равен ENT_COMPAT, чтобы декодировать сущности ", или ENT_QUOTES, чтобы декодировать и ", и '. Значение по умолчанию — ENT_NOQUOTES, при котором кавычки не декодируются.

Оригинал (английский)

Specifically deals with: &, <, >, ", and '.

$quote_style can be set to ENT_COMPAT to decode " entities, or ENT_QUOTES to do both " and '. Default is ENT_NOQUOTES where no quotes are decoded.

Параметры

$text string обязательный
Текст, который нужно декодировать.
$quote_style string|int необязательный = ENT_NOQUOTES
Преобразует двойные кавычки при значении ENT_COMPAT, одинарные и двойные — при ENT_QUOTES или ни одни — при ENT_NOQUOTES. Также совместимо со старыми значениями _wp_specialchars(); преобразует одинарные кавычки при значении 'single', двойные — при 'double' или оба вида при любом другом значении. Значение по умолчанию — ENT_NOQUOTES.

Возвращаемое значение

string

Исходный код

wp-includes/formatting.php:1015

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(
		'/&#0*39;/'   => ''',
		'/&#x0*27;/i' => ''',
	);
	$double      = array(
		'"' => '"',
		'"' => '"',
		'"' => '"',
	);
	$double_preg = array(
		'/&#0*34;/'   => '"',
		'/&#x0*22;/i' => '"',
	);
	$others      = array(
		'<'   => '<',
		'<' => '<',
		'>'   => '>',
		'>' => '>',
		'&'  => '&',
		'&' => '&',
		'&' => '&',
	);
	$others_preg = array(
		'/&#0*60;/'   => '<',
		'/&#0*62;/'   => '>',
		'/&#0*38;/'   => '&',
		'/&#x0*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 );
}

История изменений

ВерсияОписание
2.8.0 Introduced.

Что будем искать? Например,Продвижение

Этот сайт использует куки-файлы. Оставаясь на сайте, Вы соглашаетесь на их использование. Для получения дополнительной информации, пожалуйста, ознакомьтесь с политикой в отношении персональных данных.