问题引发:
utf8编码网页包含文件时前面有空行的解决
http://www.cnblogs.com/qiantuwuliang/archive/2010/10/29/1864209.html
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<?
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.k686.com>http://www.k686.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 );
}
?>
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.k686.com>http://www.k686.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文件,放到网站根目录下,可以遍历文件夹并自动清除bom,对文件绝对安全,亲测过的,测试用途见
放到网站根目录然后执行一下就OK了,会遍历所有文件
比如http://www.baidu.com/checkbom.php
也可以指定目录执行
比如http://www.baidu.com/checkbom.php?dir=html