天天看点

清理php中的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")."

";

$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 ("bom found, automatically removed.");

else {

return ("bom found.");

else

return ("bom not found.");

function rewrite ($filename,

$data) {

$filenum =

fopen($filename,

"w");

flock($filenum, lock_ex);

fwrite($filenum,

$data);

fclose($filenum);

?>