php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP批量检测并去除文件BOM头信息代码 - php高级应

PHP批量检测并去除文件BOM头信息代码 - php高级应

分享到:
【字体:大 中 小】
导读:
          因为文件头信息输出BOM头信息,有时会对程序的执行结果造成影响,那么此时即应对这些文件的BOM信息进行去除,如下代码为PHP方式去除当前目录及子目录所有文件BOM信息的代码,新建文件...

PHP批量检测并去除文件BOM头信息代码

因为文件头信息输出BOM头信息,有时会对程序的执行结果造成影响,那么此时即应对这些文件的BOM信息进行去除,如下代码为PHP方式去除当前目录及子目录所有文件BOM信息的代码,新建文件,将其放倒根目录下,然后浏览器访问即可.

例子:将以上代码保存为后缀为php的文件放到需要去除bom的文件目录里面,然后运行该php文件,将会对该目录以及该目录所有的子目录下的文件进行bom检查并去除bom,代码如下:

  1. if (isset($_GET['dir'])) { //设置文件目录   
  2.     $basedir = $_GET['dir']; 
  3. } else { 
  4.     $basedir = '.'; 
  5. } 
  6.  
  7. $auto = 1; 
  8. checkdir($basedir); 
  9.  
  10. function checkdir($basedir) 
  11. { 
  12.     if ($dh = opendir($basedir)) { 
  13.         while (($file = readdir($dh)) !== false) { 
  14.             if ($file != '.' && $file != '..') { 
  15.                 if (!is_dir($basedir . "/" . $file)) { 
  16.                     echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " 
    "
    ; 
  17.                 } else { 
  18.                     $dirname = $basedir . "/" . $file; 
  19.                     checkdir($dirname); 
  20.                 } 
  21.             } 
  22.         } 
  23.         closedir($dh); 
  24.     } 
  25. } 
  26. function checkBOM($filename) 
  27. { 
  28.     global $auto; 
  29.     $contents   = file_get_contents($filename); 
  30.     $charset[1] = substr($contents, 0, 1); 
  31.     $charset[2] = substr($contents, 1, 1); 
  32.     $charset[3] = substr($contents, 2, 1); 
  33.     if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 
  34.         if ($auto == 1) { 
  35.             $rest = substr($contents, 3); 
  36.             rewrite($filename, $rest); 
  37.             return ("red">BOM found, automatically removed._http://www.phpfensi.com">http://www.phpfensi.com"); 
  38.         } else { 
  39.             return ("red">BOM found."); 
  40.         } 
  41.     } else 
  42.         return ("BOM Not Found."); 
  43. } 
  44.  
  45. function rewrite($filename, $data) 
  46. { 
  47.     $filenum = fopen($filename, "w"); 
  48.     flock($filenum, LOCK_EX); 
  49.     fwrite($filenum, $data); 
  50.     fclose($filenum); 
  51. } 
  52. ?> 

例子二,代码如下:

  1. header('content-Type: text/html; charset=utf-8'); 
  2. $auto=1;/*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/ 
  3. $basedir='.'; 
  4. $loop=true;//www.phpfensi.com echo '当前查找的目录为:'.$basedir.'当前的设置是:'; 
  5. echo '(1)',$loop?'检查当前目录以及当前目录的子目录':'只针对当前目录进行检测'; 
  6. echo '(2)',$auto?'检测文件BOM同时去除检测到BOM文件的BOM':'只检测文件BOM不执行去除BOM操作'; 
  7.  
  8. checkdir($basedir,$loop); 
  9. function checkdir($basedir='',$loop=true){ 
  10.  $basedir=emptyempty($basedir)?'.':$basedir; 
  11.  if($dh=opendir($basedir)){ 
  12.   while (($file=readdir($dh))!==false){ 
  13.    if($file!='.'&&$file!='..'){ 
  14.     if(!is_dir($basedir.'/'.$file)){ 
  15.      echo '文件: '.$basedir.'/'.$file .checkBOM($basedir.'/'.$file).' 
    '
    ; 
  16.     }else{ 
  17.      if(!$loop) continue; 
  18.      $dirname=$basedir.'/'.$file; 
  19.      checkdir($dirname); 
  20.     } 
  21.    } 
  22.   } 
  23.   closedir($dh); 
  24.  } 
  25. } 
  26. function checkBOM($filename){ 
  27.  global $auto; 
  28.  $contents=file_get_contents($filename); 
  29.  $charset[1]=substr($contents,0,1); 
  30.  $charset[2]=substr($contents,1,1); 
  31.  $charset[3]=substr($contents,2,1); 
  32.  if(ord($charset[1])==239&&ord($charset[2])==187&&ord($charset[3])==191){ 
  33.   if($auto==1){ 
  34.    $rest=substr($contents,3); 
  35.    rewrite($filename,$rest); 
  36.    return (' 找到BOM并已自动去除'); 
  37.   }else{ 
  38.    return (' 找到BOM'); 
  39.   } 
  40.  }else{ 
  41.   return (' 没有找到BOM'); 
  42.  } 
  43. } 
  44. function rewrite($filename,$data){ 
  45.  $filenum=fopen($filename,'w'); 
  46.  flock($filenum,LOCK_EX); 
  47.  fwrite($filenum,$data); 
  48.  fclose($filenum); 
  49. } 
分享到:
php5.3中php-fpm进程管理方式 - php高级...
php5.3中php-fpm进程管理方式 目前最新5.3.x的php-fpm,有两种管理进程的方式,分别是static和dynamic,如果设置成static,进程数自始至终都是pm.max_children指定的数量,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers配置将没有作用。 如果设置成dynamic,则进程数是动态...
PHPMailer实现邮件发送例子 - php高级应...
PHPMailer实现邮件发送例子 在php中我们在linux服务器安装了邮件组件可以直接使用mail函数发送邮箱,对于windows系统我们多半使用PHPMailer实现邮件发送了,下面来看一个简单的例子. 使用PHPMailer类实现邮件的发送,代码如下: $phpmailer = new PHPMailer();  $phpmailer->IsSMTP(...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……