用php脚本写文件时不会很少碰到转义字符的问题,顶多是单引号和双引号交换使用就可以解决,今天我通过web页面生成.php文件时碰到了字符被转义的问题,
由于web页面有预览功能,因此将生成的php文件内容用ajax展示在页面上,在提交表单时将页面上显示的内容(为字符串)带到action层处理,此时,由于这个内容字符串在html中转了一圈,所以直接用fwrite函数生成为文件时,
单引号 ‘ 成了 \',左尖括号 < 成了 $lt; 右尖括号 > 成了 $gt;
看了手册发现有个函数stripslashes() 可以防止转义,因此在生成文件时可以单引号就不会被转义,仍是 ' ,但是这个函数防止转义的特殊字符不包括尖括号,因为stripslashes()函数只是去掉预定义字符前的反斜杠,而尖括号被转义后不是加反斜杠,所以这个函数对$lt;不起作用,后百般寻找,终于发现htmlspecialchars_decode()可以把转义的字符转化为实体字符, $lt; 成为 < 左尖括号, $gt; 成为 > 右尖括号,
最后,要生成文件的字符串就可以用以上两个函数防止字符转义了 stripslashes(htmlspecialchars_decode($str))
php 用fwrite函数写文件时字符转义问题
最新推荐文章于 2021-11-12 11:33:25 发布