今天所做的努力
都是在为明天积蓄力量

利用PHP程序清除网页的BOM头问题

本文最后更新于2017年8月6日,已超过2664天没有更新,如果文章内容失效,请留言反馈给我们,谢谢!
强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!

大家都知道,使用记事本等部分工具在写php文件,如果文件中使用到session、header等php内置的函数时,要求这些语句之前必须不能有空格、回车、echo输出语句、html标记等,否则页面回给出警告,并且提示 这些语句之前有输出~,错误信息就不贴出来了,总之好多同学遇到这种问题,总是有点不知所措 ,有的同学检查代码后发现这些语句前没有上述我们提及到的一些空格、回车、echo输出语句、html标记等,这是怎么回事呢?这就是文件使用utf-8编码保存的时候,有bom标记!

前段时间在网上找这个问题的答案,终于解决,我这里转发出来供大家学习参考,感谢作者。用法是,将下面的代码保存到一个文件,放到项目目录下,通过浏览器访问一下就可以了:

<?php  
$s=0;//统计成功数  
$f=0;//统计失败数  
//遍历所有文件  
function
find_allfile(){  
$i="*";  
while($file=glob($i)){  
foreach($file as
$s){  
if(!is_dir($s))$allfile&#91;&#93;=$s;  
}  
$i.="\*";  
}  
return
$allfile;  
}  
//清除BOM标记  
function del_bom(){  
global
$s,$f;  
$file=find_allfile();  
foreach($file as
$fname){  
$fname=dirname(__FILE__)."\\".$fname
$filecont=@file_get_contents($fname); 
$bom=substr($filecont,0,3); 
$bom=bin2hex($bom); 
if($bom=="efbbbf"){  
//判断文件中的前3个字节是否为BOM标记值 
$filecont=substr($filecont,3); 
$result=@file_put_contents($fname,$filecont,LOCK_EX); 
if($result){ 
echo
"&#91;file&#93; $fname --- --- <em style=\"color:green\">清除成功</em><br  
/>";$s++;  
}else{  
echo "<div id="down"><a id="load" title="下载链接" href="#button_file"><i class="icon-down"></i>下载地址</a><div class="clear"></div></div> $fname --- --- <em  
style=\"color:red\">清除失败</em>(文件只读或者被占用)<br  
/>";$f++;  
}  
}  
}  
}  
del_bom();  
if($s==0 &&   
$f==0){  
echo "<p>所有文件正常,没有发现BOM标记。</p>";  
}else{  
echo
"<p>统计结果:清除成功($s) | 清除失败($f)</p>";  
}  
?>
赞(0)
未经允许不得转载:如需转载,请标注内容来源流觞 » 利用PHP程序清除网页的BOM头问题
分享到: 更多 (0)
强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!
强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

今天所做的努力都是在为明天积蓄力量

联系我们关于小站