PHP批量删除、清除UTF-8文件BOM头的代码实例

2015-01-24信息快讯网

这篇文章主要介绍了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.");
    }

代码二:

<?php
header('content-Type: text/html; charset=utf-8');
if(isset($_GET['dir'])){ //设置文件目录,如果没有设置,则自动设置为当前文件所在目录
    $basedir=$_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); } ?>

代码三:

##把该文件放在需求去除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 ); } ?>

 

 

 

 

 

 

 

 

 

 

 

 

 

 


二、Python

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import os

def delBOM(): file_count = 0 bom_files = []

for dirpath, dirnames, filenames in os.walk('.'): if(len(filenames)): for filename in filenames: file_count += 1 file = open(dirpath + "/" + filename, 'r+') file_contents = file.read()

if(len(file_contents) > 3): if(ord(file_contents[0]) == 239 and ord(file_contents[1]) == 187 and ord(file_contents[2]) == 191): bom_files.append(dirpath + "/" + filename) file.seek(0) file.write(file_contents[3:]) print bom_files[-1], "BOM found. Deleted." file.close()

print file_count, "file(s) found.", len(bom_files), "file(s) have a bom. Deleted."

if __name__ == "__main__": delBOM()

PHP+iFrame实现页面无需刷新的异步文件上传
php中使用PHPExcel读写excel(xls)文件的方法
php修改指定文件后缀的方法
叫你如何修改Nginx与PHP的文件上传大小限制
使用PHP和HTML5 FormData实现无刷新文件上传教程
Chrome Web App开发小结
php输入流php://input使用浅析
PHP之autoload运行机制实例分析
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
修改destoon会员公司的伪静态中的com目录的方法
从零开始学YII2框架(二)通过 Composer 安装扩展插件
从零开始学YII2框架(一)通过Composer安装Yii2框架
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
php中隐形字符65279(utf-8的BOM头)问题
phpmyadmin出现Cannot start session without errors问题解决方法
PHP中遇到BOM、<feff>编码导致json_decode函数无法解析问题
PHP批量检测并去除文件BOM头代码实例
PHP删除数组中空值的方法介绍
thinkphp实现数组分页示例
php读取大文件示例分享(文件操作类)
PHP动态生成javascript文件的2个例子
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
php实现批量下载百度云盘文件例子分享
PHP按行读取、处理较大CSV文件的代码实例
php警告Creating default object from empty value 问题的解决方法
ThinkPHP使用UTFWry地址库进行IP定位实例
PHP调用VC编写的COM组件实例
php获取表单中多个同名input元素的值
php截取字符串之截取utf8或gbk编码的中英文字符串示例
使用php清除bom示例
php自动加载autoload机制示例分享
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
分享下页面关键字抓取components.arrow.com站点代码
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
PHP 下载文件时自动添加bom头的方法实例
JoshChen_web格式编码UTF8-无BOM的小细节分析
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
如何使用PHP批量去除文件UTF8 BOM信息
©2014-2024 dbsqp.com