引号内的引号太多 - 该怎么办?

时间:2012-06-20 22:15:25

标签: javascript html

以下是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字符串中,但我无法弄清楚如何执行它,因为字符串中包含“和”。看到问题了?此外,我不认为我可以逃避引号,因为我试过这样做而且编辑器没有用。

知道我能做什么吗?

3 个答案:

答案 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]\"";