当前浏览:首页 / WordPress函数 / esc_js()

esc_js( string $text )

转义单引号、"、 、&,并修复行尾。

e 翻译more...

  • __() 检索$text的翻译
  • _e() 显示翻译文本
  • _ex() 使用gettext上下文显示翻译后的字符串
  • _n_noop() 在POT文件中注册多个字符串,但不翻译它们
  • _n() 基于提供的数字翻译和检索单数或复数形式
  • _nx_noop() 在POT文件中使用gettext上下文注册多个字符串,但不翻译它们
  • _nx() 使用gettext上下文,根据提供的数字检索单/复数形式进行翻译
  • _x() 使用gettext上下文检索已翻译的字符串
  • esc_attr__() 检索$text的翻译并将其转义,以便在属性中安全使用
  • esc_attr_e() 显示为在属性中安全使用而转义的翻译文本

esc 转义more...

  • esc_attr__() 检索$text的翻译并将其转义,以便在属性中安全使用
  • esc_attr_e() 显示为在属性中安全使用而转义的翻译文本
  • esc_attr_x() 使用gettext上下文翻译字符串,并将其转义以在属性中安全使用。
  • esc_attr() 转义HTML属性
  • esc_html__() 检索$text的翻译并将其转义,以便在HTML输出中安全使用。
  • esc_html_e() 显示为在HTML输出中安全使用而转义的翻译文本。
  • esc_html_x() 使用gettext上下文翻译字符串,并将其转义,以便在HTML输出中安全使用
  • esc_html() 转义HTML块
  • esc_js() 转义单引号、"、 、&,并修复行尾。
  • esc_textarea() 转义textarea值

js


描述

转义在JS中回显的文本字符串。它旨在用于内联JS(在标记属性中,例如onclick="...")。请注意,字符串必须在单引号中。这里也应用了‘js_escape’滤波器。


参数

$text

(string) (必填) 要转义的文本。


返回

(string) 转义文本。


说明

有关转义和清理的更多信息,请参阅数据验证



源码

查看源码 官方文档


更新日志

版本描述
2.8.0开始引入

使用示例

  • 示例1

    我真的看不到使用esc_js()的价值了。如果确实需要执行内联脚本属性,则可能需要考虑以下示例wp_json_encode()esc_attr(),这似乎更易于阅读和维护:

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

    但实际上,这个特定的示例在其脚本属性中根本不需要任何PHP。由于HTMLInputElement界面上的defaultValue属性,以下结果应该是相同的:

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

    示例

    显示在站点前端的表单中的input标记示例,由小工具生成。第一个php段使用esc_attr,因为它是input的html属性,而下一个php段在内联JavasSript中使用esc_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" />
    

    如果您不在HTML事件处理程序属性中使用内联JS,那么更适合使用的函数是wp_json_encode(),它内置于WordPress中。(wp_json_encode()包括字符串分隔引号):

    var title = <?php echo wp_json_encode( $instance['title'] ) ?>;