Created
December 14, 2013 06:51
-
-
Save mingyun/7956327 to your computer and use it in GitHub Desktop.
去除BOM头,UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行via:http://www.oschina.net/code/snippet_162279_10073
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (isset($_GET['dir'])){ //config the basedir | |
$basedir=$_GET['dir']; | |
}else{ | |
$basedir = '.'; | |
} | |
$auto = 1; | |
//把以下代码保存为:killbom.php,放在要转换的文件根目录下执行即可 | |
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.</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); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment