BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部,BOM本来不影响代码的解析,但是php除外,PHP会解析BOM,会输出在页面里,造成前端有占位发生布局位移,如果不了解的php BOM 就会对这个平白多出来的东西感到莫名其妙。
我们去掉网站php文件里的BOM信息呢
编辑器可以无保存bom文件,utf-8和utf-8 with bom ,要保存了bom文件 php会报错namespace 必须是第一行的代码,现在是bom信息是第一行,虽然你看不到但是他就是在第一行
我们怎么样通过代码的形式批量的去掉文件的bom信息
在网站根目录下新建一个nobomb.php的文件,文件的代码为以下内容。主要解决模板多出空的内容、验证码不显示等问题。然后在浏览器直接访问运行nobom.php文件即可。
if(isset($_GET['dir'])){
$basedir=$_GET['dir'];
}else{
$basedir='.';
}
$auto=1;
checkdir($basedir);
functioncheckdir($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);
}
}
functioncheckBOM($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("
BOMfound,automaticallyremoved.");
}else{
return("BOMfound.");
}
}elsereturn("BOMNotFound.");
}
functionrewrite($filename,$data){
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}运行上面的代码就可以清除文件的bom信息上面的截图看是没有发现带有bom的文件的,有bom的文件 会出现字体加红色。
去掉后访问网站访问正常
网站栏目:PHP网站建设之去除文件bom头信息
转载注明:https://www.cdcxhl.com/news/241887.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有网站建设等
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联