星联网络专注帝国CMS二次功能插件开发-精品网站模板站长代码素材

  • 最近更新
  • 模板:33
  • 记录:12640|
  • 插件:52|
  • 工具:4|
  • 代码:8|
  • 评论:0

用php删除uft-8文件bom头信息的方法

前言

本文重点解决用php删除uf-8文件bom头信息的方法问题,希望能够帮助到你

window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符
 但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头 指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF 0xBB 0xBF这3个字符。
 这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了
 
bom文件头信息删除
 
我最常用的方法来处理php文件处理
 

 


  1.  
    <?php
  2.  
    /**
  3.  
    * 用法:复制以下代码至新建的php文件中,将该php文件放置项目目录,运行即可。代码来源于网络。
  4.  
    * chenwei 注。
  5.  
    */
  6.  
    header('content-Type: text/html; charset=utf-8');
  7.  
    $auto=1;/* 设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除 */
  8.  
    $basedir='.';
  9.  
    $loop=true;
  10.  
    echo '当前查找的目录为:'.$basedir.'当前的设置是:';
  11.  
    echo '(1)',$loop?'检查当前目录以及当前目录的子目录':'只针对当前目录进行检测';
  12.  
    echo '(2)',$auto?'检测文件BOM同时去除检测到BOM文件的BOM<br />':'只检测文件BOM不执行去除BOM操作<br />';
  13.  
     
  14.  
    checkdir($basedir,$loop);
  15.  
    function checkdir($basedir='',$loop=true){
  16.  
    $basedir=empty($basedir)?'.':$basedir;
  17.  
    if($dh=opendir($basedir)){
  18.  
    while (($file=readdir($dh))!==false){
  19.  
    if($file!='.'&&$file!='..'){
  20.  
    if(!is_dir($basedir.'/'.$file)){
  21.  
    echo '文件: '.$basedir.'/'.$file .checkBOM($basedir.'/'.$file).' <br>';
  22.  
    }else{
  23.  
    if(!$loop) continue;
  24.  
    $dirname=$basedir.'/'.$file;
  25.  
    checkdir($dirname);
  26.  
    }
  27.  
    }
  28.  
    }
  29.  
    closedir($dh);
  30.  
    }
  31.  
    }
  32.  
    function checkBOM($filename){
  33.  
    global $auto;
  34.  
    $contents=file_get_contents($filename);
  35.  
    $charset[1]=substr($contents,0,1);
  36.  
    $charset[2]=substr($contents,1,1);
  37.  
    $charset[3]=substr($contents,2,1);
  38.  
    if(ord($charset[1])==239&&ord($charset[2])==187&&ord($charset[3])==191){
  39.  
    if($auto==1){
  40.  
    $rest=substr($contents,3);
  41.  
    rewrite($filename,$rest);
  42.  
    return (' <font color=red>找到BOM并已自动去除</font>');
  43.  
    }else{
  44.  
    return (' <font color=red>找到BOM</font>');
  45.  
    }
  46.  
    }else{
  47.  
    return (' 没有找到BOM');
  48.  
    }
  49.  
    }
  50.  
    function rewrite($filename,$data){
  51.  
    $filenum=fopen($filename,'w');
  52.  
    flock($filenum,LOCK_EX);
  53.  
    fwrite($filenum,$data);
  54.  
    fclose($filenum);
  55.  
    }

 

 

linux下查找包含BOM头的文件和清除BOM头命令

 

查找包含BOM头的文件,命令如下:   grep -r -I -l $'^\xEF\xBB\xBF' ./   这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出。   但是,删除BOM头,网上找到的命令大多不能用,比较常见的命令是:   grep -r -I -l $'^\xEF\xBB\xBF' /path(www.111cn.net) | xargs sed -i 's/^\xEF\xBB\xBF//;q'  但这条命令会把除了首行之外所有的行删除,所以毫无意义。   经测试如下命令是可行的:    find . -type f   -exec  sed -i 's/\xEF\xBB\xBF//' {} \;   这个命令会把当前目录及所有子目录下的BOM头删除掉。

本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。

本文地址:http://www.xlkjgs.com/notes/html/512.html

以上内容由本站整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

星联网络

星联网络是中国最具实战的互联网创业者的知识服务商,这里有互联网行业动态,网络推广,SEO优化,SEM优化,ESC配置,行业经验分型,互联网项目,微信营销、淘宝客赚钱、新媒体营销、京东运营、跨境电商等众多互联网营销知识分享

站长运营站长必备网站运营之道才能长久发展