- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 wp_localize_script() 函数传递 JavaScript 对象,并期望对象中存在实体编码的字符串。以下是示例:
$params = array('str' => esc_html('this string has a < symbol and unclosed <td> tag'), 'change' => false);
wp_localize_script( 'custom_setup_js', 'custom_js_params', $params );
什么是输出?
/* <![CDATA[ */ var custom_js_params = {"str":"this string has a < symbol and unclosed <td> tag","change":""}; /* ]]> */
期望什么?
/* <![CDATA[ */
var custom_js_params = {"str":"this string has a < symbol and unclosed <td> tag","change":""};
/* ]]> */
我做错了什么或者我误解了什么?因为我需要 JavaScript 对象来包含字符串中编码的 HTML。我已经在不使用 esc_html() 函数的情况下尝试过相同的操作,但没有成功。
PS:该字符串来自用户输入,因此需要转义。我只是跳过它以便更容易地陈述问题。
最佳答案
HTML 实体再次被解码的原因是 wp_localize_script
调用了 class.wp-scripts.php
中的 localize
方法,该方法具有该行:
$l10n[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8');
此外,您的字符串将传递给 wp_json_encode
,这将在执行 PHP json_encode
之前进行一些清理。
换句话说,您的字符串首先由 WP 清理,然后由 PHP 正确转义。根据您的用例,可能不需要自己进行任何额外的编码或转义。
关于javascript - HTML 实体编码不适用于 esc_html() 和 wp_localize_script(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558193/
我有这个代码: the_content( sprintf( __( 'Continue reading %s', 'twentyfifteen' ),
什么时候绝对需要或作为使用转义函数的好习惯? 如使用 esc_url();和: get_template_directory_uri(); get_permalink(); get_author_po
我正在尝试使用 wp_localize_script() 函数传递 JavaScript 对象,并期望对象中存在实体编码的字符串。以下是示例: $params = array('str' => esc
我是一名优秀的程序员,十分优秀!