PHP批量去除BOM头代码分享
PHP的BOM头清除之旅
在Web开发中,有时会遭遇一些不必要的BOM头问题。为此,我们分享一个简单的PHP脚本,用于批量去除文件中的BOM头。这对于处理UTF-8编码的文件尤其重要,因为BOM头可能会引发一系列的问题。现在就让我们一起了解如何实现这一功能吧!
我们设置一个基本的PHP脚本框架,来遍历指定目录中的所有文件。对于每一个文件,我们将检查其是否包含BOM头。以下是核心功能的实现代码:
```php
// 设置内容类型为HTML并指定字符集为UTF-8
header("Content-Type:text/html; charset=utf-8");
// 启动目录检查过程
checkdir("D:\wamp\sales");
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")."
";
} else {
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset = array(); // 用于存储BOM头可能的字符序列的前三个字节的数组
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
// 检查前三个字节是否匹配BOM头的特征序列(EF BB BF)
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
if ($auto == 1) {
// 如果自动处理模式开启,移除BOM头并保存文件内容到新文件中,同时更新原始文件内容为新内容。这样确保了文件内容不会被破坏。同时返回提示信息。