如何使用
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>';