我应该如何转义将进入Javascript字符串的字符串? URLEncode的(X)? str_replace函数( “ '”, “\'”,X)?
答案 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:
addslashes函数将在单引号('
)和双引号("
)引号,反斜杠(\
)和NUL({{之前添加反斜杠1}})。
为了额外安全,请将整个脚本部分包装在CDATA标记中,以便您可以将脚本验证为XHTML,即使它包含\0
或<
:
>
此外,如果你真的偏执,你就会分解任何<script>
// <![CDATA[
alert("<?php echo addslashes($message); ?>");
// ]]>
</script>
和</script>
,因为这些可能会干扰HTML解析器。例如,将]]>
替换为</script>
,将<"+"/script>
替换为]]>
。同样,这取决于你如何保护自己免受恶意/可疑的用户输入。
答案 3 :(得分:-1)
addslashes
应该没问题。