检测文件中是否存在bom

4 篇文章 0 订阅

我们在使用windows下开发php的时候也不知道会啥时候会不经意的用windows的产品打开我们的php文件,也就在不经意间制造了bom。而不同的linux apache/linux环境处理bom的方式不同,也就不能确定这个bom啥时候会发出“嘣...”的影响。所以检查bom这个东西还是很有必要的。

<?php
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=0; //是否自动移除发现的BOM信息。1为是,0为否。

//以下不用改动

if ($dh = opendir($basedir)) {
	while (($file = readdir($dh)) !== false) {
		if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)){
			echo "filename: $file ".checkBOM("$basedir/$file")."<br />";
		}
	}
	
	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 ('<span style="color:red">BOM found, automatically removed.</span>');
		} else {
			return ('<span style="color:red">BOM found.</span>');
		}
	}else {
		return ("BOM Not Found.");
	}
}

function rewrite ($filename, $data) {
	$filenum=fopen($filename,"w");
	flock($filenum,LOCK_EX);
	fwrite($filenum,$data);
	fclose($filenum);
}
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值