php批量删除、清除utf-8文件bom头信息。
注意,运行前记得备份文件。
例1,php批量删除、清除utf-8文件bom头。
复制代码 代码示例:
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.</font>");
} else {
return ("<font color=red>bom found.</font>");
}
}
else return ("bom not found.");
}
例2,php批量删除、清除utf-8文件bom头。
复制代码 代码示例:
<?php
header('content-type: text/html; charset=utf-8');
if(isset($_get['dir'])){ //设置文件目录,如果没有设置,则自动设置为当前文件所在目录
$ba
sedir=$_get['dir'];
}else{
$basedir='.';
}
$auto=1;/*设置为1标示检测bom并去除,设置为0标示只进行bom检测,不去除*/
echo '当前查找的目录为:'.$basedir.'当前的设置是:';
echo $auto?'检测文件bom同时去除检测到bom文件的bom<br />':'只检测文件bom不执行去除bom操作<br />';
checkdir($basedir);
function checkdir($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{
$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);
}
?>
例3,php批量删除、清除utf-8文件bom头。
复制代码 代码示例:
##把该文件放在需求去除bom头的目录下跑一下却可。
<?php
if (isset ( $_get ['dir'] )) { // config the basedir
$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) { // bom
// 的前三个字符的ascii
// 码分别为
// 239
// 187
// 191
if ($auto == 1) {
$rest = substr ( $contents, 3 );
rewrite ( $filename, $rest );
return ("<font color=red>bom found, automatically removed.</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 );
}
?>