PHP:我应该如何转义将进入Javascript字符串的字符串?

时间:2010-08-17 15:21:45

标签: php javascript string escaping

我应该如何转义将进入Javascript字符串的字符串? URLEncode的(X)? str_replace函数( “ '”, “\'”,X)?

4 个答案:

答案 0 :(得分:2)

使用json_encode

所以你可以做到

$page_params = array(
    'user_logged_in' => $suer->IsActive(),
    'some_string' => "sajdhf\"test''z\'\fsdf"
    'ts' => time()
);

$page_params = json_encode($page_params);

然后在你的模板中你可以去

var page_params = <?php echo $page_params ?>;

女巫会产生

var page_params = {"user_logged_in":false,"some_string":"sajdhf\"test''z\'\fsdf","ts":2452346543}

通过这种方式,您可以将多个变量设置为1个字符串,并通过Json Library

完成转义

答案 1 :(得分:1)

如果可用,请使用json_encode(自PHP 5.2起):

var str = <?php echo json_encode($str); ?>;

否则,您可以使用rawurlencode并使用decodeURIComponent解码:

var str = decodeURIComponent("<?php echo rawurlencode($str); ?>");

答案 2 :(得分:0)

你应该做一些事情来逃避你的输入。至少做#1:

  1. addslashes函数将在单引号(')和双引号(")引号,反斜杠(\)和NUL({{之前添加反斜杠1}})。

  2. 为了额外安全,请将整个脚本部分包装在CDATA标记中,以便您可以将脚本验证为XHTML,即使它包含\0<

    >
  3. 此外,如果你真的偏执,你就会分解任何<script> // <![CDATA[ alert("<?php echo addslashes($message); ?>"); // ]]> </script> </script>,因为这些可能会干扰HTML解析器。例如,将]]>替换为</script>,将<"+"/script>替换为]]>。同样,这取决于你如何保护自己免受恶意/可疑的用户输入。

答案 3 :(得分:-1)

addslashes应该没问题。