以下是CKEditor在我的网站上使用的一段代码:
CKEDITOR.config.IPS_BBCODE = {"acronym":{"id":"8","title":"Acronym","desc":"Allows you to make an acronym that will display a description when moused over","tag":"acronym","useoption":"1","example":"[acronym='Laugh Out Loud']lol[/acronym]", ...
如果向右滚动一下,您会看到:
"[acronym='Laugh Out Loud']lol[/acronym]"
我需要将所有CKEditor代码存储在javascript字符串中,但我无法弄清楚如何执行它,因为字符串中包含“和”。看到问题了?此外,我不认为我可以逃避引号,因为我试过这样做而且编辑器没有用。
知道我能做什么吗?
答案 0 :(得分:8)
您可以尝试获取字符串并将JavaScript转义码注入其中。使用格式时,JavaScript基本上可以使用任何unicode值:\u####
- 因此,对于'
字符,代码为\u0039
,对于"
字符,代码为是\u0034
。
所以 - 您可以将字符串的示例部分编码为:
\u0034[acronym=\u0039Laugh Out Loud\u0039]lol[/acronym]\u0034
或者,您可以尝试简单地转义引号,如:
\"[acronym=\'Laugh Out Loud\']lol[/acronym]\"
当您遇到这种情况时,会出现问题:
"data:{'prop1':'<a href="/url/here/">back\\slash</a>'}"
当以这种方式转义时,变为:
"data:{\'prop\':\'<a href=\"/url/here/\">back\\\\slash</a>\'}\"
虽然这比第一个版本更具可读性 - 反序列化在跨越对象空间时可能有点棘手,例如将javascript对象传递给需要反序列化为对象的C#解析器,然后重新编译-serialize并回来。两种语言都使用\作为它们的转义字符,并且可以获得时髦的场景,这些场景是脑筋急转弯的解决方案。
\u####
方法的优点是只有JavaScript通常在典型的堆栈中使用它 - 因此很容易理解哪些部分应该由哪个应用程序块转义。
答案 1 :(得分:0)
$newstring = addslashes($oldstring);
答案 2 :(得分:0)
无需使用Unicode转义序列。只需用双引号括起你的字符串,并在字符串中的任何双引号之前加上反斜杠。
var x = "\"[acronym='Laugh Out Loud']lol[/acronym]\"";