PHP批量检测并去除文件BOM头信息代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-06-20 10:01:55 浏览: 评论:0
因为文件头信息输出BOM头信息,有时会对程序的执行结果造成影响,那么此时即应对这些文件的BOM信息进行去除,如下代码为PHP方式去除当前目录及子目录所有文件BOM信息的代码,新建文件,将其放倒根目录下,然后浏览器访问即可.
例子:将以上代码保存为后缀为php的文件放到需要去除bom的文件目录里面,然后运行该php文件,将会对该目录以及该目录所有的子目录下的文件进行bom检查并去除bom,代码如下:
- <?php
- if (isset($_GET['dir'])) { //设置文件目录
- $basedir = $_GET['dir'];
- } else {
- $basedir = '.';
- }
- $auto = 1;
- checkdir($basedir);
- function checkdir($basedir)
- {
- if ($dh = opendir($basedir)) {
- while (($file = readdir($dh)) !== false) {
- if ($file != '.' && $file != '..') {
- if (!is_dir($basedir . "/" . $file)) {
- echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>";
- } 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 ("<font color="red">BOM found, automatically removed._<a href="http://www.phpfensi.com">http://www.phpfensi.com</a></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
- header('content-Type: text/html; charset=utf-8');
- $auto=1;/*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/
- $basedir='.';
- $loop=true;//www.phpfensi.com echo '当前查找的目录为:'.$basedir.'当前的设置是:';
- echo '(1)',$loop?'检查当前目录以及当前目录的子目录':'只针对当前目录进行检测';
- echo '(2)',$auto?'检测文件BOM同时去除检测到BOM文件的BOM<br />':'只检测文件BOM不执行去除BOM操作<br />';
- checkdir($basedir,$loop);
- function checkdir($basedir='',$loop=true){
- $basedir=emptyempty($basedir)?'.':$basedir;
- if($dh=opendir($basedir)){
- while (($file=readdir($dh))!==false){
- if($file!='.'&&$file!='..'){
- if(!is_dir($basedir.'/'.$file)){
- echo '文件: '.$basedir.'/'.$file .checkBOM($basedir.'/'.$file).' <br>';
- }else{
- if(!$loop) continue;
- $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 (' <font color=red>找到BOM并已自动去除</font>');
- }else{
- return (' <font color=red>找到BOM</font>');
- }
- }else{
- return (' 没有找到BOM');
- }
- }
- function rewrite($filename,$data){
- $filenum=fopen($filename,'w');
- flock($filenum,LOCK_EX);
- fwrite($filenum,$data);
- fclose($filenum);
- }
Tags: PHP批量检测 去除文件BOM信息
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)