esc_js()WP 2.8.0

Подготавливает строку для использования в JavaScript. Чтобы уберечь от ошибок: экранирует кавычки, меняет символы " <> & на спецсимволы HTML и поправляет окончание строки.

Полезна при использовании однострочного JS кода (в HTML атрибутах, например onclick='…').

Работает на основе: _wp_specialchars()
Хуки из функции

Возвращает

Строку. Измененную строку.

Использование

esc_js( $text );
$text(строка) (обязательный)
Текст, который нужно изменить.

Примеры

0

#1 Пример работы esc_js():

$text = <<<'TEXT'
кавычка ', двойная ", больше >, меньше <, амперсанд &
TEXT;
echo esc_js( $text );

// вернет: кавычка \', двойная &quot;, больше &gt;, меньше &lt;, амперсанд &amp;
0

#2 Пример с HTML тегом input для формы.

Первый PHP сегмент использует функцию esc_attr() т.к. это строка в атрибуте, а второй сегмент использует esc_js(), т.к. строка предназначена для JS:

<input type="text"
value="<?php echo esc_attr( $instance['input_text'] ); ?>"
id="subbox"
onfocus="if ( this.value == '<?php echo esc_js( $instance['input_text'] ); ?>') { this.value = ''; }" onblur="if ( this.value == '' ) { this.value = '<?php echo esc_js( $instance['input_text'] ); ?>'; }"
name="email" />

Список изменений

С версии 2.8.0 Введена.

Код esc_js() WP 6.4.3

function esc_js( $text ) {
	$safe_text = wp_check_invalid_utf8( $text );
	$safe_text = _wp_specialchars( $safe_text, ENT_COMPAT );
	$safe_text = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", stripslashes( $safe_text ) );
	$safe_text = str_replace( "\r", '', $safe_text );
	$safe_text = str_replace( "\n", '\\n', addslashes( $safe_text ) );
	/**
	 * Filters a string cleaned and escaped for output in JavaScript.
	 *
	 * Text passed to esc_js() is stripped of invalid or special characters,
	 * and properly slashed for output.
	 *
	 * @since 2.0.6
	 *
	 * @param string $safe_text The text after it has been escaped.
	 * @param string $text      The text prior to being escaped.
	 */
	return apply_filters( 'js_escape', $safe_text, $text );
}