PHP批量检测并去除文件BOM头信息代码
因为文件头信息输出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: //HdhCmsTestphpfensi测试数据">http://HdhCmsTestphpfensi测试数据</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; //HdhCmsTestphpfensi测试数据 echo '当前查找的目录为:'.$basedir.'当前的设置是:'; echo '(1)' , $loop ? '检查当前目录以及当前目录的子目录' : '只针对当前目录进行检测' ; echo '(2)' , $auto ? '检测文件BOM同时去除检测到BOM文件的BOM<br />' : '只检测文件BOM不执行去除BOM操作<br />' ; checkdir( $basedir , $loop ); function checkdir( $basedir = '' , $loop =true){ $basedir = empty empty ( $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 ); }查看更多关于PHP批量检测并去除文件BOM头信息代码 - php高级应的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29828