<?php
$name = 'Mary\'s book has been "\stolen".';
?>
<script>
function a() {
alert("<?=addslashes($name)?>");
}
</script>
输出:
<script>
function a() {
alert("Mary\'s book has been \"\\stolen\".");
}
</script>
这样就不会因为php变量中的特殊字符导致生成的JS脚本出现语法错误。
目前共有6篇帖子。
![]() |
<?php 这样就不会因为php变量中的特殊字符导致生成的JS脚本出现语法错误。 |
![]() |
addslashes — 使用反斜线引用字符串:
http://php.net/manual/zh/function.addslashes.php 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 |
![]() |
可以使用stripslashes函数取消addslashes的转义。 例如: ?> 输出0,,表示$str和$str2是相同的字符串。 |
![]() |
【示例】 这正和alert对话框中显示的内容一样。 |
![]() |
【总结】
把PHP变量放入JavaScript字符串中: <script> function a() { alert("<?=addslashes($var)?>"); } </script> 把Javascript字符串表示的内容解析到PHP变量中: <?php $str = 'alert("x\"xx")'; // 从外部获得的JavaScript代码中的一句alert语句 $start = strpos($str, '"'); // 第一次双引号出现的位置 $end = strrpos($str, '"'); // 最后一次双引号出现的位置 $content = substr($str, $start + 1, $end - $start - 1); // 截取$str中双引号中的内容 $content = stripslashes($content); // 去除JavaScript转义 echo $content; ?> 输出x"xx,正是JavaScript字符串所表示内容。 |
![]() |
类似的,通过addslashes函数,PHP变量把一段JS代码传递给JavaScript并eval执行。
<?php $script = 'var a="This";var b="is";alert(a+" "+b+" a pen.");'; ?> <script> function b() { var scr = "<?=addslashes($script)?>"; eval(scr); } </script> |