分享一段PHP脚本:去掉UTF8文件的中的所有BOM

blogdaren 2009-06-10 抢沙发 1602人次

分享一段PHP脚本:可以自动把所有的文件的BOM去掉,只需简单运行一下即可,非常方便。

另外,对于UltraEdit的用户来说,可以在UltraEdit.ini中修改一下设置,这样就不用每次都特别留意这个问题了。

Write UTF-8 BOM=0
Write UTF-8 BOM NF=0

将如下PHP脚本放在根目录中执行一次就行了,会自动去除所有文件头中的BOM。

<?php
$auto = 1; 
$basedir = isset($_GET['dir']) ? $_GET['dir'] : '';
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").PHP_EOL;
                }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);
}

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:分享一段PHP脚本:去掉UTF8文件的中的所有BOM

发表评论:

您的昵称:
电子邮件:
个人主页: