gpt4 book ai didi

javascript - Escape\u200b(零宽度空格)和其他非法 JavaScript 字符

转载 作者:行者123 更新时间:2023-11-29 22:17:02 26 4
gpt4 key购买 nike

我有一组 JavaScript 对象,我引导到后端模板以在页面加载时初始化我的 Backbone.js 集合。它看起来像这样(作为 Twig 模板):

<script type="text/javascript">
(function() {
var jobCollection = new App.Collections.Item(
{% for item in items %}
{
name: '{{ item.name }}',
...
},
{% endfor %}
);
})();
</script>

我遇到的问题是某些文本字段包含破坏 JavaScript 的\u200b(零宽度空格)。

转义这些字符的最佳方法是什么?我应该在后端转义它们(我使用 Symfony 2 和 Twig 来呈现初始模板)还是应该在客户端使用 JavaScript 转义它们?如何在 JavaScript 或 PHP 中转义零宽度空格字符和其他字符?

最佳答案

如果字符只出现在字符串中,无论是转义为 \u200b 还是作为文字,你应该没问题。它们只是作为标识符是非法的。即使作为标识符,您仍然可以将它们用作对象属性名称,如果您使用下标符号 (obj["aaa\u200b"] = "foo");至少在 Chrome 中是这样,但我不确定它的安全/兼容性如何。

看几个似乎有效的例子:

var escaped = "aaa \u200b bbb";
var unescaped = "bbb ​ ccc";

console.log(escaped.charCodeAt(4));
console.log(unescaped.charCodeAt(4));

var obj = {};
obj[escaped] = "foo";
obj[unescaped] = "bar";
console.log(obj[escaped]);
console.log(obj[unescaped]);
console.log(obj["aaa \u200b bbb"]);
console.log(obj["bbb ​ ccc"]);

http://codepen.io/anon/pen/JqjEK

您可能也对我刚才写的这个问答感兴趣:No visible cause for "Unexpected token ILLEGAL"

关于javascript - Escape\u200b(零宽度空格)和其他非法 JavaScript 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com