PHP批量去除BOM头内容信息代码
了解并处理PHP文件中的BOM头
你是否遇到过在编辑UTF-8编码的PHP文件时,文件头部出现无法识别的字符?这其实是BOM头在起作用。那么,什么是BOM头?又如何批量去除它呢?
一、什么是BOM头?
BOM头,即Byte Order Mark,用于标识文件是否采用UTF-8编码。虽然现在很多软件都能识别BOM头,但也有一些,如PHP,无法识别。当你在记事本等工具中以UTF-8编码保存文件时,BOM头就会自动添加,如果不移除,可能会导致执行错误。
二、如何批量去除BOM头?
以下是一段PHP代码,可以批量检查并去除指定目录下的所有文件的BOM头。
```php
if (isset($_GET['dir'])) { //通过GET方式获取要检查的目录
$basedir = $_GET['dir'];
} else {
$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")."
";
} else {
checkdir($basedir."/".$file); //递归检查子目录
}
}
}
closedir($dh);
}
}
function checkBOM ($filename) {
$contents = file_get_contents($filename);
$charset = substr($contents, 0, 3); //获取文件开头的三个字节,即BOM头
if (ord($charset[0]) == 239 && ord($charset[1]) == 187 && ord($charset[2]) == 191) { //判断是否为UTF-8编码的BOM头
return "已找到BOM并成功移除。";
} else {
return "未找到BOM。";
}
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
fwrite($filenum, $data); //写入新的文件内容,不包含BOM头
fclose($filenum);
}
checkdir($basedir); //开始检查指定目录下的所有文件
?>
```
三、其他去除BOM头的方法:
在构建网页时,为了确保浏览器能够正确和显示内容,我们需要设置页面的编码方式。这句代码“Content-type: text/html; charset=utf-8”就是用来控制HTML输出页面的编码格式的。它告诉浏览器,页面内容是以UTF-8编码方式呈现的,这是一种广泛使用的字符编码标准,能够支持多种语言和字符。
有时候,你可能会遇到UTF-8编码的BOM(Byte Order Mark)问题。BOM是 Unicode编码中的字节序标记,用于标识文本流的开始位置。在Windows操作系统下,如果使用“记事本”等默认文本编辑器保存文件为UTF-8格式时,可能会包含BOM。
为了处理BOM,你可以使用专业的文本编辑器如WINHEX等工具,将文件开头的两个字节删除。在Dreamweaver等网页开发工具中,也可以在编码设置里选择是否带BOM。只要PHP输出的不是图片(GDI Stream),BOM并不会导致问题。
GDI Stream是一种特殊的输出流,如果其开头包含了额外的字符,就可能会显示为红叉。这是因为在某些情况下,BOM或其他特殊字符可能会干扰浏览器正确页面内容。如果你遇到了类似问题,可以检查并调整你的编码设置,以确保网页能够正常显示。
通过调用“cambrian.render('body')”,你的网页内容得以动态生成并呈现给访客。这行代码可能是某种框架或库中的函数,用于控制网页主体的渲染过程。在设置和调试网页编码时,我们需要仔细处理各种细节,以确保用户能够顺利浏览和体验我们的网站。
编程语言
- PHP批量去除BOM头内容信息代码
- linux下mysql乱码问题的解决方案
- J2SE中的序列化的认识
- JS自动倒计时30秒后按钮才可用(两种场景)
- .NET 下运用策略模式(组合行为和实体的一种模式
- asp.net Repeater 数据绑定的具体实现(图文详解)
- php与c 实现按行读取文件实例代码
- .net decimal保留指定的小数位数(不四舍五入)
- Bootstrap popover 实现鼠标移入移除显示隐藏功能方
- PHP中类型转换 ,常量,系统常量,魔术常量的详解
- 使用vue-cli创建项目的图文教程(新手入门篇)
- 详解AngularJS中ng-src指令的使用
- 变量、函数、类的命名规则
- 不固定参数的存储过程实现代码
- PHP 99乘法表的几种实现代码
- JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲