用PHP解决万恶的BOM_PHP教程

php中文网
发布: 2016-07-14 10:12:01
原创
997人浏览过

[php]
$path = dirname(__FILE__); 
 
scanddir($path); 
 
 
function bomtoutf8($filename) 

    $ef = 239; 
    $bb = 187; 
    $bf = 191; 
 
    if (is_dir($filename)) return; 
    $fd = fopen($filename, "rb"); 
    if (!$fd) exit($filename); 
    $headers = fread($fd, 3); 
    fclose($fd); 
     
    if (strlen($headers)  
    if (ord($headers[0]) == $ef &&  
        ord($headers[1]) == $bb && 
        ord($headers[2]) == $bf 
        ) { 
        echo $filename, "\n"; 
        $content = file_get_contents($filename); 
        if (!$content) { 
            exit("file get contents failed"); 
        } 
        $len = strlen($content); 
        $content = substr($content, 3); 
 
        if ($content === false && $len!=3) { 
            exit("sbustr failed"); 
        } else if ($content === false && $len==3){ 
            $content = ""; 
        } 
        $ret = file_put_contents($filename, $content, LOCK_EX); 
        if ($ret === false) { 
            exit("file put contents failed"); 
        } 
        echo "successed file ", $filename, "\n"; 
    } 
 
 

 
function scandDir($path) 

    $d = dir($path); 
    if (!$d) exit("dir failed"); 
 
    while (false !== ($entry = $d->read())) { 
        if ($entry == '.' || $entry == '..') { 
            continue; 
        } 
        $filename = $path . DIRECTORY_SEPARATOR . $entry; 
    //  echo $filename, "\n";  
        if (is_dir($filename)) { 
            scandDir($filename); 
        } else { 
            bomtoutf8($filename); 
        } 
    } 

$path = dirname(__FILE__);

scanddir($path);


function bomtoutf8($filename)
{
 $ef = 239;
 $bb = 187;
 $bf = 191;

 if (is_dir($filename)) return;
 $fd = fopen($filename, "rb");
 if (!$fd) exit($filename);
 $headers = fread($fd, 3);
 fclose($fd);
 
 if (strlen($headers)

 if (ord($headers[0]) == $ef &&
  ord($headers[1]) == $bb &&
  ord($headers[2]) == $bf
  ) {
  echo $filename, "\n";
  $content = file_get_contents($filename);
  if (!$content) {
   exit("file get contents failed");
  }
  $len = strlen($content);
  $content = substr($content, 3);

  if ($content === false && $len!=3) {
   exit("sbustr failed");
  } else if ($content === false && $len==3){
   $content = "";
  }
  $ret = file_put_contents($filename, $content, LOCK_EX);
  if ($ret === false) {
   exit("file put contents failed");
  }
  echo "successed file ", $filename, "\n";
 }


}

function scandDir($path)
{
 $d = dir($path);
 if (!$d) exit("dir failed");

 while (false !== ($entry = $d->read())) {
  if ($entry == '.' || $entry == '..') {
   continue;
  }
  $filename = $path . DIRECTORY_SEPARATOR . $entry;
 // echo $filename, "\n";
  if (is_dir($filename)) {
   scandDir($filename);
  } else {
   bomtoutf8($filename);
  }
 }
}


友情提示:代码是批量处理目录下(包括子目录)的所有带BOM文件,使用前需备份

 

万知
万知

万知: 你的个人AI工作站

万知 38
查看详情 万知

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477261.htmlTechArticle[php] ?php $path = dirname(__FILE__); scanddir($path); function bomtoutf8($filename) { $ef = 239; $bb = 187; $bf = 191; if (is_dir($filename)) return; $fd = fopen($filename, rb); i...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号