我在javascript中有以下输出日期的代码。使用反斜杠,我将这些字符串替换为str_replace
删除反斜杠,但我无法使用任何转义函数esc_js
.
Stored Days Array
array (size=2)
0 => string \'4/7/2018\' (length=8)
1 => string \'11/18/2017\'(length=10)
The code
var disabledDays = <?php echo str_replace( \'\\\\/\', \'/\', wp_json_encode( $iva_disable_days ) ); ?>;
Tried Code which is not working
var disabledDays = <?php echo esc_js( str_replace( \'\\\\/\', \'/\', wp_json_encode( $iva_disable_days ) ) ); ?>;
结果输出
var disabledDays = ["4/7/2018","11/18/2017"];
如何在中清理上述部分
The Code
最合适的回答,由SO网友:ssnepenthe 整理而成
esc_js()
用于转义HTML属性中使用的数据。
如果要转义数据以在内联脚本中使用,wp_json_encode()
应该足够了。
例如:
var disabledDays = <?php echo wp_json_encode( $iva_disable_days ); ?>;
这将输出:
var disabledDays = ["4\\/7\\/2018","11\\/18\\/2017"];
如果在dev tools控制台中检查该变量,您将看到它被正确解析:
但是,如果您绝对不希望使用转义斜杠(不推荐),则第二个参数
wp_json_encode()
是选项的位掩码:
var disabledDays = <?php echo wp_json_encode( $iva_disable_days, JSON_UNESCAPED_SLASHES ); ?>;
这将输出:
var disabledDays = ["4/7/2018","11/18/2017"];
有关可用选项的列表,请检查
PHP json_encode()
docs.