# _wp_specialchars()

URL: https://chugunov.pro/api-wordpress/functions/_wp_specialchars/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 1.2.2.

## Сигнатура

```php
_wp_specialchars( string $text, int|string $quote_style = ENT_NOQUOTES, false|string $charset = false, bool $double_encode = false ): string
```

## Описание

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

## Параметры

- `$text` `string` — обязательный. Текст, который нужно закодировать.
- `$quote_style` `int|string` — необязательный, по умолчанию `ENT_NOQUOTES`. Преобразует двойные кавычки при значении ENT_COMPAT, одинарные и двойные — при ENT_QUOTES или ни одни — при ENT_NOQUOTES.
  
  Преобразует одинарные и двойные кавычки, а также преобразует именованные HTML-сущности (не являющиеся одновременно именованными XML-сущностями) в их кодовые точки при значении ENT_XML1. Также совместимо со старыми значениями; преобразует одинарные кавычки при значении 'single', двойные — при 'double' или оба вида при любом другом значении.
  
  Значение по умолчанию — ENT_NOQUOTES.
- `$charset` `false|string` — необязательный, по умолчанию `false`. Кодировка символов строки.
- `$double_encode` `bool` — необязательный, по умолчанию `false`. Кодировать ли существующие HTML-сущности.

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

`string`

## Исходный код

Файл: `wp-includes/formatting.php:945`

```php
function _wp_specialchars( $text, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
	$text = (string) $text;

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

	// Don't bother if there are no specialchars - saves some processing.
	if ( ! preg_match( '/[&<>"\']/', $text ) ) {
		return $text;
	}

	// Account for the previous behavior of the function when the $quote_style is not an accepted value.
	if ( empty( $quote_style ) ) {
		$quote_style = ENT_NOQUOTES;
	} elseif ( ENT_XML1 === $quote_style ) {
		$quote_style = ENT_QUOTES | ENT_XML1;
	} elseif ( ! in_array( $quote_style, array( ENT_NOQUOTES, ENT_COMPAT, ENT_QUOTES, 'single', 'double' ), true ) ) {
		$quote_style = ENT_QUOTES;
	}

	$charset = _canonical_charset( $charset ? $charset : get_option( 'blog_charset' ) );

	$_quote_style = $quote_style;

	if ( 'double' === $quote_style ) {
		$quote_style  = ENT_COMPAT;
		$_quote_style = ENT_COMPAT;
	} elseif ( 'single' === $quote_style ) {
		$quote_style = ENT_NOQUOTES;
	}

	if ( ! $double_encode ) {
		/*
		 * Guarantee every &entity; is valid, convert &garbage; into &amp;garbage;
		 * This is required for PHP < 5.4.0 because ENT_HTML401 flag is unavailable.
		 */
		$text = wp_kses_normalize_entities( $text, ( $quote_style & ENT_XML1 ) ? 'xml' : 'html' );
	}

	$text = htmlspecialchars( $text, $quote_style, $charset, $double_encode );

	// Back-compat.
	if ( 'single' === $_quote_style ) {
		$text = str_replace( "'", '&#039;', $text );
	}

	return $text;
}
```

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

- 5.5.0 — $quote_style also accepts ENT_XML1.
- 1.2.2 — Introduced.

## Связанные

Использует: [`wp_kses_normalize_entities`](https://chugunov.pro/api-wordpress/functions/wp_kses_normalize_entities/), [`_canonical_charset`](https://chugunov.pro/api-wordpress/functions/_canonical_charset/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/).
Используется в: [`esc_xml`](https://chugunov.pro/api-wordpress/functions/esc_xml/), [`esc_js`](https://chugunov.pro/api-wordpress/functions/esc_js/), [`esc_html`](https://chugunov.pro/api-wordpress/functions/esc_html/), [`esc_attr`](https://chugunov.pro/api-wordpress/functions/esc_attr/), [`wp_specialchars`](https://chugunov.pro/api-wordpress/functions/wp_specialchars/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/_wp_specialchars/
