用 PHP 生成 JavaScript 字符串

原来,在从 PHP 中直接传递字符串给 JavaScript 时,直接用了 addcslashes,如果传递的是带有 utf-8 编码汉字的,就用 "\0..\037\042\134",如果纯 ascii 范围内的字符串,就用 "\0..\037\042\134\177..\377"。但是今天在写加密程序时发现,发现程序有时行,有时不行。后来发现原来是 \v \a 搞的。addcslashes 会把 \007..\015(八进制) 转义成 \a\b\t\n\v\f\r,而其中 \a 这个 IE 和 Firefox 都不认识,\v 这个 Firefox 认识,IE 不认识。所以我写了下面这个函数,用它可以就可以转化成 JavaScript/JScript 所认识的字符串了(其中 $flag 表示是否转义 ascii 码大于 127 的字符)。感谢五帝同学的帮助! /* @author andot & wudi */ function addjsslashes($str, $flag = true) { if ($flag) { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134\177..\377"); } else { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134"); } return str_replace(array(chr(7), chr(11)), array('\007', '\013'), $str); }

标签: PHP, JavaScript

« 上一篇 | 下一篇 »

只显示10条记录相关文章

发表评论

评论 (必须):