将 PHP 字符串编码为输出到 JavaScript 变量的最简单方法是什么?
我有一个包含引号和换行符的 PHP 字符串。我需要将此字符串的内容放入 JavaScript 变量中。
通常,我只会在 PHP 文件中构建我的 JavaScript,à la:
<script>
var myvar = "<?php echo $myVarValue;?>";
</script>
但是,当$myVarValue
包含引号或换行符时,这不起作用。
将 PHP 字符串编码为输出到 JavaScript 变量的最简单方法是什么?
我有一个包含引号和换行符的 PHP 字符串。我需要将此字符串的内容放入 JavaScript 变量中。
通常,我只会在 PHP 文件中构建我的 JavaScript,à la:
<script>
var myvar = "<?php echo $myVarValue;?>";
</script>
但是,当$myVarValue
包含引号或换行符时,这不起作用。
扩展别人的答案:
<script>
var myvar = <?php echo json_encode($myVarValue); ?>;
</script>
使用json_encode()需要:
$myVarValue
编码为 UTF-8(当然也可以是 US-ASCII)由于 UTF-8 支持完整的 Unicode,因此即时转换应该是安全的。
请注意,因为json_encode
转义正斜杠,即使是包含的字符串也</script>
将被安全转义以使用脚本块进行打印。
用 JSON 编码
function escapeJavaScriptText($string)
{
return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\")));
}
偏执版本:转义每个字符。
function javascript_escape($str) {
$new_str = '';
$str_len = strlen($str);
for($i = 0; $i < $str_len; $i++) {
$new_str .= '\\x' . sprintf('%02x', ord(substr($str, $i, 1)));
}
return $new_str;
}
编辑:json_encode()
可能不合适的原因是有时,您需要防止"
生成,例如
<div onclick="alert(???)" />