3

我提取了一些需要插入到 javascript 变量中的 html/文本字符串。

例如,这就是它在 php 中的样子:

echo "<script type=\"text/javascript\">\n";
echo "var myvar='{$value}'";
echo "\n</script>";

上述方法的问题是某些特殊字符实际上会破坏 javascript 代码。

所以,我尝试使用 htmlspecialchars:

htmlspecialchars($value,11,'utf-8',true); //11 stands for ENT_QUOTES|ENT_SUBSTITUTE

这确实取代了一些不寻常的字符,最重要的是引号。

然而,新的行字符通过它并破坏了我的 javascript。

那么我怎么能逃脱新的换行符呢?我需要保留它们以便稍后在 textareas 中使用。

*编辑*我将发布我的变量的示例值。(它们实际上是 Tiny_mce 的输入)

 <p>You've been...</p>
 <p><iframe src="http://www.youtube.com/embed/8d7OBluielc?wmode=transparent" frameborder="0" width="640" height="360"></iframe></p>
4

1 回答 1

11
<script type="text/javascript">
    var myvar = <?php echo json_encode($value); ?>;
</script>

JSON == Javascript 表示法 == 任何输出到 Javascript 的值的正确编码/转义方法。

于 2012-08-18T08:43:13.973 回答