<?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脚本出现语法错误。
可以使用stripslashes函数取消addslashes的转义。
例如:<?php$str = 'Mary\'s book has been "\stolen".';$str2 = addslashes($str);$str2 = stripslashes($str2);echo strcmp($str, $str2);
?>
输出0,,表示$str和$str2是相同的字符串。
【示例】PHP从外部获取了一段javascript脚本,其中有一个alert语句,alert语句中的字符已经经过了转义以防止出现JS语法错误。这时PHP想要把这个字符串取出来,解析出转义前的内容,也就是alert对话框中实实在在显示的内容。程序如下:<?php $str = 'alert("Mary\\\'s book has been \"\\\\stolen\".");'; // 这是从HTML网页中抓取的JS Alert语句$str = preg_replace('/^alert\("/', '', $str);$str = preg_replace('/"\);$/', '', $str);$str = stripslashes($str);echo "您在Javascript中弹出的提示框的内容为:$str";?>输出:您在Javascript中弹出的提示框的内容为:Mary's book has been "\stolen".
这正和alert对话框中显示的内容一样。