本文分享一次开发中遇到的文件输出空行的问题以及原因。
欢迎讨论和吐槽。
文件输出空行的问题
一个公共类,用来输出json数据,只要调用这个类中的方法输出,在输出json数据前面多出空行
###问题原因和解决方法
- 使用之前的版本没有这个问题,经过版本对比,发现修改的过程中,在php结束标志的地方?>后面不小心添加了几个空行;
- 然后再请求这个文件输出的时候,会在最前面多出几个空行(并没有影响json的解析);
?>
- 去掉文件中的空行后,问题解决。
问题总结
- 针对这种输出额外空行的问题,除了检查文件中是否有额外的空行,还可能是文件编码造成的:如果是notepad编写的php文件,会统一添加UTF-8 + BOM,造成php文件的输出有空行。保存成其他不包含BOM头的编码格式可以解决。
- 可以通过脚本检查自己的php文件是否包含空行,将以下脚本放在文件目录下,执行以下脚本查看。
"; }else{ $dirname = $basedir."/". $file; checkdir($dirname); } } } closedir($dh); } } function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); return ("BOM found, automatically removed."); } else { return ("BOM found. "); } } else return ("BOM Not Found."); } ?>