首页 >

PHP去除BOM头代码

后端开发|php教程PHP去除BOM头代码
php建站常用代码
后端开发-php教程
PHP去除BOM头代码
小蚂蚁门户源码,ubuntu打开usb串口,数据爬虫python实例,php header ,思茅seo收费lzw
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行,
待办事项 源码,vscode标签,ubuntu 卸载svn,plugin tomcat,sqlite 存文件,服务器 虚拟空间,wordpress 返利 插件,前端步骤条框架,java多线程 爬虫,php获取文件创建时间,淮南seo优化,网站密码登录代码,网页代码精品,html简单大气模板,注册页面html代码,java商场信息管理系统,java聊天小程序lzw
如果您在修改任何PHP文件後发生:
* 不能登入或者不能登出;
* 页顶出现一条空白;
* 页顶出现错误警告;
* 其它不正常的情况。
志愿者手机端源码,怎么用vscode,ubuntu文件权限,tomcat重启命令,sqlite 表存在,张家港企业网页设计,本地mssql2000数据库迁移至万网,服务器虚拟化 vps,wp微信采集插件,知乎前端框架,网络爬虫图片,php输入,seo综合,xml转springboot,好看的a标签按钮样式,韩国购物网站模板,网页广告图片素材,vb界面模板,火车头采集 dedecms 后台不显示 前台先死,网站式登录页面模板下载地址,web管理系统样式,序列matlab程序lzw
本程序采用UTF-8编码。现在几乎所有的文本编辑软件都可以显示并编辑UTF-8编码的文件。但是很遗憾,其中很多软件的表现并不理想。

类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个*烦。

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

最大的麻烦还不是这个。受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。

因此,在编辑、更改任何文本文件时,请务必使用不会乱加BOM的编辑器。Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。推荐的编辑器是: Editplus 2.12版本以上、EmEditor、UltraEdit(需要取消‘添加BOM’的相关选项)、Dreamweaver(需要取消‘添加BOM’的相关选项) 等。

对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。(Editplus需要先另存为gb,再另存为UTF-8。) ,以下是程序解决方案:

if (isset ($_GET['dir'])) { //设置文件目录	$basedir = $_GET['dir'];} else {	$basedir = '.';}$auto = 1;checkdir($basedir);function checkdir($basedir) {	if ($dh = opendir($basedir)) {		while (($file = readdir($dh)) !== false) {			if ($file != '.' && $file != '..') {				if (!is_dir($basedir . "/" . $file)) {					echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " ";				} 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);			rewrite($filename, $rest);			return ("BOM removed.");		} else {			return ("BOM found.");		}	} else		return ("BOM Not Found.");}function rewrite($filename, $data) {	$filenum = fopen($filename, "w");	flock($filenum, LOCK_EX);	fwrite($filenum, $data);	fclose($filenum);}

PHP去除BOM头代码
  • PHP判断某时间段是否包含周末代码
  • PHP判断某时间段是否包含周末代码 | PHP判断某时间段是否包含周末代码 ...

    PHP去除BOM头代码
  • php下检测字符串是否是utf8编码的代码办法
  • php下检测字符串是否是utf8编码的代码办法 | php下检测字符串是否是utf8编码的代码办法 ...

    PHP去除BOM头代码
  • PHP制作中间带logo的二维码代码
  • PHP制作中间带logo的二维码代码 | PHP制作中间带logo的二维码代码 ...