php include 语句包含文件时,浏览器多出换行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php include 语句包含文件时,浏览器多出换行相关的知识,希望对你有一定的参考价值。

今天在做一个项目时候,用include语句包含文件。在云服务器上测试正常,在虚拟主机上总是多了莫名奇妙的换行符或者空格符。问题如下:技术分享图片
经过排查发现问题出现在包含文件的页面编码上:被包含文件的编码是 utf-8+bom编码方式存储。将文件转化成utf-8无bom的编码格式就好;
下面此次问题排查中学习到的东西,总结如下:

1.什么是BOM?

BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。UTF-8实际上包含两种格式:UTF-8 无BOM 类型 与 UTF-8 有BOM 类型。题主刚好使用的是有bom的的类型。事实上在UTF-16 UTF-32中同样分带有BOM及无BOM两种.

2.存在的问题?

BOM实际上是非常有用的前缀。但是在服务器点对点沟通解析或者网页展示中某些情况下却是多余或者说是会带来“麻烦”的。例如会在页头增加如下所示的乱码字符:”“锘?”

1.例如我们把几个JS文件合并成一个文件后,如果文件中间含有BOM字符,就会导致浏览器JS语法错误。

2.php就不能识别bom头,PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

3文件编码转化方法

我使用editplus编辑器进行转化,具体如下,选文档(Document)菜单——文件编码(File encoding)——批量转换编码(File encoding multiple),选中全部文件后转码,然后再全部保存。

扩充-解决php输出时出现多余的空格或者换行

1.要查清自己本身有没有echo 或者exit空格或者换行,
2.一定要保证php文件里<?php ?>标签外没有多余的回车,换行。如果是纯粹的php脚本文件,请删除脚本后面结束标记
3.这些都排查了之后,如果是utf8编码的文件,还会输出一个多余的空格回车。做xml传输时经常死在这多余的空白上面。这是由于BOM文件头造成的。另存为无BOM的文件即可。

以上是关于php include 语句包含文件时,浏览器多出换行的主要内容,如果未能解决你的问题,请参考以下文章

php require和include区别

PHP内的包含语句(include(),require(),include_once(),require_once())

PHP学习1 — PHP文件处理

PHP include 和 require 语句

php包含文件

2017.7.25