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

例子二,代码如下:

  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(!$loopcontinue
  18.      $dirname=$basedir.'/'.$file
  19.      checkdir($dirname); 
  20.     } 
  21.    } 
  22.   } 
  23.   closedir($dh); 
  24.  } 
  25. function checkBOM($filename){ 
  26.  global $auto
  27.  $contents=file_get_contents($filename); 
  28.  $charset[1]=substr($contents,0,1); 
  29.  $charset[2]=substr($contents,1,1); 
  30.  $charset[3]=substr($contents,2,1); 
  31.  if(ord($charset[1])==239&&ord($charset[2])==187&&ord($charset[3])==191){ 
  32.   if($auto==1){ 
  33.    $rest=substr($contents,3); 
  34.    rewrite($filename,$rest); 
  35.    return (找到BOM并已自动去除'); 
  36.   }else
  37.    return (找到BOM'); 
  38.   } 
  39.  }else
  40.   return (' 没有找到BOM'); 
  41.  } 
  42. function rewrite($filename,$data){ 
  43.  $filenum=fopen($filename,'w'); 
  44.  flock($filenum,LOCK_EX); 
  45.  fwrite($filenum,$data); 
  46.  fclose($filenum); 
分享到:
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技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……