wp_specialchars_decode() WP 2.8.0

Конвертує (декодує) HTML сутності у їх HTML символи. Змінює лише:&, <, >, ", '

Якщо потрібно кодувати символи по суті, використовуйте esc_html()

Майте на увазі, що ця функція декодує не всі сутності. Наприклад, вона не декодує &#8211(-).

Якщо потрібно декодувати всі символи, використовуйте html_entity_decode() .

Основа для:
acf_strlen()
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

Приклади

0

#1 Замінимо HTML сутності на звичні символи HTML

$string = <<<'TEXT'
амперсанд - & / & # 038; / & # x26;
одинарні лапки - ' / & # x27;
подвійні лапки - " / & # 034; / & # x22;
більше - > / & # 062;
менше - < / & # 060;
TEXT;

echo wp_specialchars_decode( $string, ENT_QUOTES );

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

список змін

З версії 2.8.0Введено.

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);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *