好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP 去掉 utf8格式文件中的bom头部 - php高级应用

PHP 去掉 utf8格式文件中的bom头部

我们有时要去掉utf8文档中头部我们经常会需要手工清除了,下面我整理了几个利用php程序清除 utf8格式文件中的bom头部方法.

PHP实例1,代码如下:

/**    * 去掉文件中的 bom头    * @var 0.1    * @author Chenwp    */   function  clearbom( $contents ){           //UTF8 去掉文本中的 bom头        $BOM  =  chr (239). chr (187). chr (191);        return   str_replace ( $BOM , '' , $contents );      }    /**    * 去掉文件中的bom头    * @param object $fileName Description    * @return object    Description    */   function  clearfilebom( $fileName ){       $c  =  file_get_contents ( $fileName );       $c  = clearbom( $c );       file_put_contents ( $fileName , $c );  } 

PHP实例例2,代码如下:

<?php    //此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除     $basedir = "." ;  //修改此行为需要检测的目录,点表示当前目录   $auto =1;  //是否自动移除发现的BOM信息。1为是,0为否。     //以下不用改动     if  ( $dh  = opendir( $basedir )) {          while  (( $file  = readdir( $dh )) !== false) {          if  ( $file != '.'  &&  $file != '..'  && ! is_dir ( $basedir . "/" . $file ))  echo   "filename: $file " .checkBOM( "$basedir/$file" ). " <br>" ;         }          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 found, automatically removed.</font>" );              }  else  {                     return  ( "<font color=red>BOM found.</font>" );              }          }             else   return  ( "BOM Not Found." );  }    function  rewrite ( $filename ,  $data ) {           $filenum = fopen ( $filename , "w" );           flock ( $filenum ,LOCK_EX);          fwrite( $filenum , $data );          fclose( $filenum );  }  //结束   ?> 

PHP实例3,代码如下:

<?php   // 设定你要清除BOM的根目录(会自动扫描所有子目录和文件)   $HOME  = dirname( __FILE__ );  // 如果是Windows系统,修改为:$WIN = 1;   $WIN  = 0;  ?>  <!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://HdhCmsTestw3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >  <html xmlns= "http://HdhCmsTestw3.org/1999/xhtml" >  <head>  <meta http-equiv= "Content-Type"  content= "text/html; charset=utf-8"  />  <title>UTF8 BOM 清除器</title>  <style>  body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }  .FOUND { color: #F30; font-size: 14px; font-weight: bold; }  </style>  </head>  <body>  <?php  $BOMBED  =  array ();  RecursiveFolder( $HOME );  echo   '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">' ;  foreach  ( $BOMBED   as   $utf ) {  echo   $utf  . "<br />n" ; }  echo   '</p>' ;  // 递归扫描   function  RecursiveFolder( $sHOME ) {    global   $BOMBED ,  $WIN ;    $win32  = ( $WIN  == 1) ?  "\" : " /";    $folder  = dir( $sHOME );    $foundfolders  =  array ();    while  ( $file  =  $folder ->read()) {     if ( $file  !=  "."   and   $file  !=  ".." ) {      if ( filetype ( $sHOME  .  $win32  .  $file ) ==  "dir" ){       $foundfolders [ count ( $foundfolders )] =  $sHOME  .  $win32  .  $file ;     }  else  {       $content  =  file_get_contents ( $sHOME  .  $win32  .  $file );       $BOM  = SearchBOM( $content );       if  ( $BOM ) {        $BOMBED [ count ( $BOMBED )] =  $sHOME  .  $win32  .  $file ;        // 移出BOM信息         $content  =  substr ( $content ,3);        // 写回到原始文件         file_put_contents ( $sHOME  .  $win32  .  $file ,  $content );      }     }    }   }    $folder ->close();    if ( count ( $foundfolders ) > 0) {     foreach  ( $foundfolders   as   $folder ) {     RecursiveFolder( $folder ,  $win32 );    }   }  }  // 搜索当前文件是否有BOM   function  SearchBOM( $string ) {      if ( substr ( $string ,0,3) == pack( "CCC" ,0xef,0xbb,0xbf))  return  true;     return  false;   }  ?>  </body>  </html> 

查看更多关于PHP 去掉 utf8格式文件中的bom头部 - php高级应用的详细内容...

  阅读:51次