通过php查找并处理函数BOM的文件
站在用户的角度思考问题,与客户深入沟通,找到白朗网站设计与白朗网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、网站空间、企业邮箱。业务覆盖白朗地区。
header("Content-type:text/html;charset=utf-8");
// 默认是当前目录
$basedir = '.';
// 是否自动去掉 BOM 头,默认不去除(0表示不去1表示去)
$auto = 0;
/*
* 函数名:checkDir
* 说明:检查目录及文件是否包含BOM头
*/
function checkDir($basedir){
// opendir函数获取打开目录句柄
if($dh = opendir($basedir)) {
// readdir函数返回目录中下一个文件的文件名
while(($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..') {
// is_dir函数检查指定的文件是否是目录
if(!is_dir($basedir."/".$file)) {
// 调用检查文件内容是否包含BOM的函数
echo "文件名 $basedir/$file ".checkBOM("$basedir/$file")."
";
}else {
$dirname = $basedir."/".$file;
// 递归调用
checkDir($dirname);
}
}
}
// 关闭目录句柄
closedir($dh);
}
}
/*
* 函数名:checkBOM
* 说明:检查文件内容是否包含BOM
*/
function checkBOM($filename) {
global $auto;
// file_get_contents() 函数把整个文件读入一个字符串中
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
// ord函数返回字符串的首个字符的 ASCII 值
if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
if($auto == 1) {
// substr() 函数返回字符串的一部分,截图除了前三个字符的其他内容
$rest = substr($contents, 3);
// 调用重写文件函数
rewrite ($filename, $rest);
return "BOM 找到, 自动删除";
} else {
return "找到BOM";
}
}else{
return "BOM 没有找到";
}
}
/*
* 函数名:rewrite
* 说明:向指定文件写指定的内容
*/
function rewrite($filename, $data){
// fopen() 函数打开文件或者URL,"w"表示写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
$file = fopen($filename, "w");
// flock() 函数锁定或释放文件,"LOCK_EX"表示要取得独占锁定(写入的程序)
flock($file, LOCK_EX);
// fwrite() 函数写入文件
fwrite($file, $data);
// fclose() 函数关闭一个打开文件
fclose($file);
}
// 调用检查目录及文件是否包含BOM头函数
checkDir($basedir);
本文名称:通过php查找并处理函数BOM的文件
文章地址:http://pwwzsj.com/article/jpeidg.html