这篇文章主要介绍了php中如何去掉ufeff,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
php去掉ufeff的方法:1、将PHP文件保存为无dom格式;2、通过“function checkBOM($filename){...}”方法检查并去掉ufeff即可。
本文操作环境:windows7系统、PHP7.1版、DELL G3电脑
php 去除文件的BOM\ufeff
今天遇到一个问题,请求接口返回的数据不符合格式,用浏览器打印出来又看不出什么问题,最后发现是数据头部有\UFEFF(BOM头),搜索下,是文件编码格式为UTF8-BOM引起的,开发时编辑器保存格式有误,解决办法有两种:
1、文件量少,可以用notopad++ 保存为无dom格式(格式->转为UTF-8 无dom格式)
2、文件很多时,用下列代码,运行后可以对指定目录(不传参则为当前目录)下所有文件进行修复
<?php header('content-Type: text/html; charset=utf-8'); if(isset($_GET['dir'])){ //设置文件目录,如果没有设置,则自动设置为当前文件所在目录 $basedir=$_GET['dir']; }else{ $basedir='.'; } $auto=1;/*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/ echo '当前查找的目录为:'.$basedir.'当前的设置是:'; echo $auto?'检测文件BOM同时去除检测到BOM文件的BOM<br />':'只检测文件BOM不执行去除BOM操作<br />'; checkdir($basedir); function checkdir($basedir){ if($dh=opendir($basedir)){ while (($file=readdir($dh)) !== false){ if($file != '.' && $file != '..'){ if(!is_dir($basedir.'/'.$file)){ echo '文件: '.$basedir.'/'.$file .checkBOM($basedir.'/'.$file).' <br>'; }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 (' <font color=red>找到BOM并已自动去除</font>'); }else{ return (' <font color=red>找到BOM</font>'); } }else{ return (' 没有找到BOM'); } } function rewrite($filename,$data){ $filenum=fopen($filename,'w'); flock($filenum,LOCK_EX); fwrite($filenum,$data); fclose($filenum); } ?>
感谢你能够认真阅读完这篇文章,希望小编分享的“php中如何去掉ufeff”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。