您的位置:

php批量去除文件bom头的简单介绍

本文目录一览:

什么是Bom头 怎样去除PHP文件的Bom头[有580人瞄过/0评]

菜单--修改--页面属性 或者ctrl+j打开页面属性窗口,点选“标题/编码”去掉“包括Unicode签名Bom”前的勾 有Bom的文件太多?这样太麻烦?当然有更好的方法!方法三:用php文件批量去除bom头 将以下这段代码保存为php文件,上传到服务器,用浏览器访问它!?phpif (isset($_GET['dir'])){ //设置文件目录 $basedir=$_GET['dir'];}else{$basedir = '.';}$auto = 1;checkdir($basedir); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' $file != '..'){ if (!is_dir($basedir./.$file)) { echo filename: $basedir/$file .checkBOM($basedir/$file). ;}else{$dirname = $basedir./.$file; checkdir($dirname);}}}closedir($dh);}}function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 ord($charset[2]) == 187 ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); rewrite ($filename, $rest); return (font color=redBOM found, automatically removed./font);} else {return (font color=redBOM found./font);}}else return (BOM Not Found.);}function rewrite ($filename, $data) { $filenum = fopen($filename, w); flock($filenum, LOCK_EX); fclose($filenum);}?还用记事本保存?那你真是智商捉急了!

如何去掉BOM头

去掉bom头的办法,简单的是下面两种:

1、editplus去BOM头的方法

编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。

运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,

然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。

2、ultraedit去除bom头办法

打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了

PHP批量删除、清除UTF-8文件BOM头的代码实例

记得运行代码前先把文件备份一下哦,避免出现失败问题。

代码一:

复制代码

代码如下:

function

checkBOM

($filename)

{

global

$auto;

$contents

=

file_get_contents($filename);

$charset[1]

=

substr($contents,

0,

1);

$charset[2]

=

substr($contents,

1,

1);

$charset[3]

=

substr($contents,

2,

1);

if

(ord($charset[1])

==

239

ord($charset[2])

==

187

ord($charset[3])

==

191)

{

if

($auto

==

1)

{

$rest

=

substr($contents,

3);

rewrite

($filename,

$rest);

return

("font

color=redBOM

found,

automatically

removed./font");

}

else

{

return

("font

color=redBOM

found./font");

}

}

else

return

("BOM

Not

Found.");

}

代码二:

复制代码

代码如下:

?php

header('content-Type:

text/html;

charset=utf-8');

if(isset($_GET['dir'])){

//设置文件目录,如果没有设置,则自动设置为当前文件所在目录

$basedir=$_GET['dir'];

}else{

$basedir='.';

}

$auto=1;/*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/

echo

'当前查找的目录为:'.$basedir.'当前的设置是:';

echo

$auto?'检测文件BOM同时去除检测到BOM文件的BOMbr

/':'只检测文件BOM不执行去除BOM操作br

/';

checkdir($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).'

br';

}else{

$dirname=$basedir.'/'.$file;

checkdir($dirname);

}

}

}

closedir($dh);

}

}

function

checkBOM($filename){

global

$auto;

$contents=file_get_contents($filename);

$charset[1]=substr($contents,0,1);

$charset[2]=substr($contents,1,1);

$charset[3]=substr($contents,2,1);

if(ord($charset[1])==239

ord($charset[2])==187

ord($charset[3])==191){

if($auto==1){

$rest=substr($contents,3);

rewrite($filename,$rest);

return

('

font

color=red找到BOM并已自动去除/font');

}else{

return

('

font

color=red找到BOM/font');

}

}else{

return

('

没有找到BOM');

}

}

function

rewrite($filename,$data){

$filenum=fopen($filename,'w');

flock($filenum,LOCK_EX);

fwrite($filenum,$data);

fclose($filenum);

}

?

什么是Bom头 怎样去除PHP文件的Bom头

方法一:用Ultraedit或Editplus打开PHP文件,另存为无Bom的utf-8文件方法二:用Dreamweaver去除Bom头

菜单–修改–页面属性 或者ctrl+j打开页面属性窗口,点选“标题/编码”去掉“包括Unicode签名Bom”前的勾

有Bom的文件太多?这样太麻烦?当然有更好的方法!方法三:用php文件批量去除bom头 将以下这段代码保存为php文件,上传到服务器,用浏览器访问它!?phpif (isset($_GET['dir'])){ //设置文件目录

$basedir=$_GET['dir'];}else{$basedir = '.';}$auto = 1;checkdir($basedir);

function checkdir($basedir){

if ($dh = opendir($basedir)) {

while (($file = readdir($dh)) !== false) {

if ($file != '.' $file != '..'){

if (!is_dir($basedir./.$file)) {

echo filename: $basedir/$file .checkBOM($basedir/$file). ;}else{$dirname = $basedir./.$file;

checkdir($dirname);}}}closedir($dh);}}function checkBOM ($filename) {

global $auto;

$contents = file_get_contents($filename);

$charset[1] = substr($contents, 0, 1);

$charset[2] = substr($contents, 1, 1);

$charset[3] = substr($contents, 2, 1);

if (ord($charset[1]) == 239 ord($charset[2]) == 187 ord($charset[3]) == 191) {

if ($auto == 1) {

$rest = substr($contents, 3);

rewrite ($filename, $rest);

return (font color=redBOM found, automatically removed./font);} else {return (font color=redBOM found./font);}}else return (BOM Not Found.);}function rewrite ($filename, $data) {

$filenum = fopen($filename, w);

flock($filenum, LOCK_EX);

fclose($filenum);}?还用记事本保存?那你真是智商捉急了!

如何使用PHP批量去除文件UTF8 BOM信息

原理:

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" /

titleUTF8 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 'h2These files had UTF8 BOM, but i cleaned them:/h2p class="FOUND"';

foreach ($BOMBED as $utf) { echo $utf ."br /n"; }

echo '/p';

// 递归扫描

function RecursiveFolder($sHOME) {

global $BOMBED, $WIN;

$win32 = ($WIN == 1) ? "" : "/";

$folder = dir($sHOME);

$foundfolders = array();

while ($file = $folder-read()) {

if($file != "." and $file != "..") {

if(filetype($sHOME . $win32 . $file) == "dir"){

$foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;

} else {

$content = file_get_contents($sHOME . $win32 . $file);

$BOM = SearchBOM($content);

if ($BOM) {

$BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;

// 移出BOM信息

$content = substr($content,3);

// 写回到原始文件

file_put_contents($sHOME . $win32 . $file, $content);

}

}

}

}

$folder-close();

if(count($foundfolders) 0) {

foreach ($foundfolders as $folder) {

RecursiveFolder($folder, $win32);

}

}

}

// 搜索当前文件是否有BOM

function SearchBOM($string) {

if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;

return false;

}

?

/body

/html

望采纳。

如何去掉BOM头,PHP批量去除BOM头的方法

代码一:

function checkBOM ($filename) {

  global $auto;

  $contents = file_get_contents($filename);

  $charset[1] = substr($contents, 0, 1);

  $charset[2] = substr($contents, 1, 1);

  $charset[3] = substr($contents, 2, 1);

  if (ord($charset[1]) == 239  ord($charset[2]) == 187  ord($charset[3]) == 191) {

    if ($auto == 1) {

      $rest = substr($contents, 3);

      rewrite ($filename, $rest);

      return ("font color=redBOM found, automatically removed./font");

    } else {

      return ("font color=redBOM found./font");

    }

  }

  else return ("BOM Not Found.");

}

代码二:

?php

header('content-Type: text/html; charset=utf-8');

if(isset($_GET['dir'])){ //设置文件目录,如果没有设置,则自动设置为当前文件所在目录

  $basedir=$_GET['dir'];

}else{

  $basedir='.';

}

$auto=1;/*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/

 

echo '当前查找的目录为:'.$basedir.'当前的设置是:';

echo $auto?'检测文件BOM同时去除检测到BOM文件的BOMbr /':'只检测文件BOM不执行去除BOM操作br /';

 

checkdir($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).' br';

        }else{

          $dirname=$basedir.'/'.$file;

          checkdir($dirname);

        }

      }

    }

    closedir($dh);

  }

}

function checkBOM($filename){

  global $auto;

  $contents=file_get_contents($filename);

  $charset[1]=substr($contents,0,1);

  $charset[2]=substr($contents,1,1);

  $charset[3]=substr($contents,2,1);

  if(ord($charset[1])==239  ord($charset[2])==187  ord($charset[3])==191){

    if($auto==1){

      $rest=substr($contents,3);

      rewrite($filename,$rest);

      return (' font color=red找到BOM并已自动去除/font');

    }else{

      return (' font color=red找到BOM/font');

    }

  }else{

    return (' 没有找到BOM');

  }

}

function rewrite($filename,$data){

  $filenum=fopen($filename,'w');

  flock($filenum,LOCK_EX);

  fwrite($filenum,$data);

  fclose($filenum);

}

?