background image

如何使用

PHP 批量去除文件 UTF8 BOM 信息

如果

PHP 文件头部包含 BOM 信息,就会输出一个空白,在很多时候会带来问题,比如我

session 无法工作、cookie 无法设置等等问题

原理:
UTF8 文件,微软为了增加一个识别信息,有了 BOM 这个东西:BOM —— Byte Order 
Mark,缺省在 Windows 等平台上编辑的 UTF8 文件会在头部增加 3 个字节的标记信息,我

PHP 引擎在处理的时候会完整读取整个 PHP 代码文档, 如果 PHP 文件头部包含 BOM

信息,就会输出一个空白,在很多时候会带来问题,比如我们

session 无法工作、cookie 无

法设置等等问题。
解决方法:
把头部

BOM 的 3 个字节信息识别出来,然后剔除掉。不过一般情况我们不知道哪个文件有

BOM,或者是有很多文件,这个时候,就需要进行批量处理了,下面代码主要就是展现了
批量处理的情况,应该会对大家工作中有帮助。
执行方法:
设置一个路径,然后直接执行就行。
代码如下

:

 
<?php 

// 设定你要清除 BOM 的根目录(会自动扫描所有子目录和文件)

$HOME

 = dirname(

__FILE__

);

// 如果是 Windows 系统,修改为:$WIN = 1;

$WIN

 = 0;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>UTF8 BOM 清除器</title>
<style>
body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
.FOUND { color: #F30; font-size: 14px; font-weight: bold; }
</style>
</head>
<body>
<?php

$BOMBED

 = 

array

();

RecursiveFolder(

$HOME

);

echo

 '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';

foreach

 (

$BOMBED

 

as

 

$utf

) { 

echo

 

$utf

 ."<br />\n"; }

echo

 '</p>';