php文件输出空行


本文分享一次开发中遇到的文件输出空行的问题以及原因。
欢迎讨论和吐槽。

文件输出空行的问题

一个公共类,用来输出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.");
    }
    ?>
    

文章作者: Xudong Jiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Xudong Jiang !
 上一篇
swoole-学习使用中遇到的问题记录 swoole-学习使用中遇到的问题记录
本文分享自己在学习使用swoole中遇到的一些问题,在此记录。欢迎讨论和吐槽。 疑问-思考 我们使用swoole server的时候,在前面是否需要设置nginx代理等; 使用swoole中设置worker进程,设置几个比较合适? 个人感觉
2016-07-13
下一篇 
jquery-autocompleter使用介绍 jquery-autocompleter使用介绍
本文分享使用jquery-autocompleter模板。欢迎讨论和吐槽。 使用场景在业务中遇到需求希望可以在输入框中输入游戏名称的一部分,然后自动补全出含游戏id-游戏名称的下拉选项供选择。 使用案列 业务中的实现代码如下:var gam
2016-04-17
  目录