3

我需要创建一个变量来存储动态生成的 HTML 内容。从 PHP 返回的字符串中的 html 内容可能有单引号或双引号。

html_content=<?=$string;?>;

字符串可能有这样的双引号:

<span id="something">something else</span>

或像这样的单引号:

<span id='something'>something else</span>

那么,我怎样才能正确地将字符串保存在javascript中呢?我不能使用单引号或双引号。

4

3 回答 3

2

您可以通过在输出之前在服务器端对其进行修改来保存这种字符串,如下所示:

html_content = "<?=addslashes($string);?>"

然后,该方法addslashes($string)将在运行时转义任何双引号,然后再将其提供给 JavaScript 变量。

于 2012-09-13T20:48:30.040 回答
1

好吧,您总是可以在存储之前使用JavaScript 的转义函数来序列化您的字符串。那会奏效的。

不过,我认为这里更大的问题是,单引号实际上在您尝试在 id 属性中使用它们的方式(根据 HTML 规范)中是无效的。它总是必须是双引号。如果来自的代码不受您的控制,那么您无能为力,它只是坏了;但如果它在你的控制之下,你也应该修复它。

于 2012-09-13T20:41:13.500 回答
0

用于json_encode将几乎任何变量从 PHP 传递到 JavaScript。

html_content=<?=json_encode($string)?>;

如果是字符串,它将自动添加引号和任何必要的转义。

于 2012-09-13T20:38:32.970 回答