验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

php bom指的是什么

阅读:1277 来源:乙速云 作者:代码code

php bom指的是什么

php bom是用来判断文本文件是哪一种Unicode编码的标记;在utf-8编码文件中,BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码。

1.问题描述:所有使用控制层返回的ajax请求都会在前面附加一个小红点,查了一下是因为文件前面有BOM,虽然事后证明并不是所有的文件都带有BOM,但是却造成所有的文件返回数据都出现问题。

2.那么,什么是BOM呢?

答曰:在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。

3.解决方案,去网上找一些批量处理BOM的脚本运行一下就行了,你也可以运行像editplus、Ultraedit这样的工具来解决。

4.最后提供一个去BOM的文件,运行一下就可以了。

echo '当前查找的目录为:'.$basedir.'当前的设置是:';
echo $auto?'检测文件BOM同时去除检测到BOM文件的BOM':'只检测文件BOM不执行去除BOM操作';
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).' 
';                 }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并已自动去除');         }else{             return (' 找到BOM');         }     }else{         return (' 没有找到BOM');     } } function rewrite($filename,$data){     $filenum=fopen($filename,'w');     flock($filenum,LOCK_EX);     fwrite($filenum,$data);     fclose($filenum); } ?>

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>