本文介绍了自动检测UTF-8文件BOM的PHP去除的方法,分享给大家仅供参考。具体实现的方法如下:

BOM信息在文件开头的一串隐藏的字符,这是用来让一些编辑们认识到这是一个UTF-8编码的文件,但PHP读取文件时读它,形成一个问题,包含了一些无法识别的字符在文件的开头。

例如,保存为UTF-8格式的PHP文件是用来生成图片,也因为隐藏在文件头的BOM信息的下发,导致了错误的图片数据,和浏览器不能识别它。

检测是否一个UTF-8文件包含BOM信息,它是检测文件的开头的词的三个字,无论是0xef,0xBB,和0xbf。下面这个小程序,用户遍历一个目录中的文件和检测是否添加BOM。

复制代码代码如下:< PHP

此文件是用来测试UTF8 / /快速编码文件没有添加BOM,并能自动消除

Bob Shen

$ basedir =。; / /修改此行为检测目录,点表示当前目录

$ = 1;自动删除已找到的BOM信息。1是,0不是。

以下不改变

如果($ DH = opendir($ basedir)){

而(($文件= readdir($ DH))!= false){

如果(文件文件is_dir ==!!!(合则。 /。文件))回声文件名:文件。checkbom ($ basedir /文件);

}

closedir($ DH);

}

功能checkbom($文件名){

全球汽车美元;

内容= file_get_contents美元($文件名);

$字符{ 1 } = substr(合内容,0, 1);

$字符{ 2 } = substr(合内容,1, 1);

$字符{ 3 } = substr(合内容,2, 1);

如果(ORD($字符{ 1 })= = 239级($字符{ 2 })= = 187级($字符{ 3 })= = 191){

如果($ = 1){

$休息= substr($内容,3);

重写($文件名,$休息);

返回(已找到BOM,自动删除);

{人}

返回(找到的BOM);

}

}

否则返回(未找到BOM);

}

函数重写($文件名,$){

filenum美元= fopen($文件名,W);

羊群(filenum美元,lock_ex);

fwrite(filenum美元,美元的数据);

Fclose(filenum美元);

}

把上面的代码修改为del_bom.php,需要检测和运行目录。这可能有助于检测哪些文件与BOM信息,导致所有的页面,在页面的开始有这样的空白。

把下面的代码保存为bom.php记得保存为UTF8格式

复制代码代码如下所示:

目录下的测试结果

< PHP

此文件是用来测试UTF8 / /快速编码文件没有添加BOM,并能自动消除

由鲍伯老板

风变化

str_replace = $(目录

$ basedir =目录; / /修改此行为检测目录,点表示当前目录

$ = 1;自动删除已找到的BOM信息。1是,0不是。

以下不改变

如果($ DH = opendir($ basedir)){

而(($文件= readdir($ DH))!= false){

如果(文件文件is_dir ==!!!(合则。 /。文件))回声文件名:文件。checkbom ($ basedir /文件);

}

closedir($ DH);

}

功能checkbom($文件名){

全球汽车美元;

内容= file_get_contents美元($文件名);

$字符{ 1 } = substr(合内容,0, 1);

$字符{ 2 } = substr(合内容,1, 1);

$字符{ 3 } = substr(合内容,2, 1);

如果(ORD($字符{ 1 })= = 239级($字符{ 2 })= = 187级($字符{ 3 })= = 191){

如果($ = 1){

$休息= substr($内容,3);

重写($文件名,$休息);

返回(Bom已被清除);

{人}

返回(Bom发现);

}

}

否则返回()——未检查到BOM;

}

函数重写($文件名,$){

filenum美元= fopen($文件名,W);

羊群(filenum美元,lock_ex);

fwrite(filenum美元,美元的数据);

Fclose(filenum美元);

}

>



目录:





请输入文件夹名称,如插件/饭否,不需要添加 /。如果根目录输入被检测到。小数点的提交是可用的。



希望本文能对大家的PHP程序设计有所帮助。