导航:首页 > 编程语言 > utf8bomphp

utf8bomphp

发布时间:2022-05-19 23:51:22

Ⅰ 如何使用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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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>';
// 递归扫描
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>
望采纳。

Ⅱ php utf-8 bom问题

1. 可用UE(Ultra Edit)的ASCII模式编辑, 把"<"前面的三个字符去掉.

2. 或者用下面PHP代码保存成del_bom.php, 放到config.php文件同目录执行(先备份后操作)

<?php
function remove_bom($string) {
if(substr($string, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
$string = substr($string, 3);
}
return $string;
}
$file = 'a.php'; // 你的文件名
$str = file_get_contents($file);
$str = remove_bom($str);
file_put_contents($file, $str);

Ⅲ 如何解决PHP在utf-8编码下中文显示乱码问题

如果php文件已经在头部设置编码格式为utf-8,在运行的时候还出现乱码问题,可能是由于文件编码格式不匹配或者头部有bom信息输出导致乱码。解决办法:

  1. 设置保存文件编码格式为utf-8;

  2. 去掉文件头部bom信息;

Ⅳ 什么是BOM头,及PHP解决办法

php去除BOM头:

复制代码

function rmBOM($string)

{

if (substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf))

{

$string = substr($string, 3);

}

return $string;

}

Ⅳ php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL

son_decode函数能够接收utf8编码的参数,但是当参数中包含BOM时,json_decode就会失效。
这个函数能将给定的字符串转换成UTF-8编码,移除其中的BOM。
下面是PHP代码:
function prepareJSON($input) {

//This will convert ASCII/ISO-8859-1 to UTF-8.
//Be careful with the third parameter (encoding detect list), because
//if set wrong, some input encodings will get garbled (including UTF-8!)
$imput = mb_convert_encoding($input, 'UTF-8', 'ASCII,UTF-8,ISO-8859-1');

//Remove UTF-8 BOM if present, json_decode() does not like it.
if(substr($input, 0, 3) == pack("CCC", 0xEF,

Ⅵ 用utf-8编码php文件时,我们可以选择以(utf-8编码格式)还是以(utf-8无BOM编码格式)

保存时,使用UTF-8 无BOM编码格式。

php在处理BOM头的时候,有时候存在错误,可能造成你在使用 header 或 session_start 之类的函数时,出现 文件已经输出的错误,多数都是因为BOM头送出去了。。因为在php看来,成了一个空格。所以使用无BOM的格式!

Ⅶ PHP程序UTF8无BOM的问题,请高手赐教

第一,BOM是不会影响你显示的绎码的……
如果你手动绎码后,能正常 。那是因为你没在你的文件指定字符串编码
header("Content-type:text/html;charset=utf8");在PHP文件开头加上这句

Ⅷ 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=red>BOM
found,
automatically
removed.</font>");

}
else
{

return
("<font
color=red>BOM
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文件的BOM<br
/>':'只检测文件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);
}
?>

Ⅸ php文件转为有bom头utf8编码不乱码,转为无bom头utf8乱码

PHP的介绍
PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种可以 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。自从PHP5开始,引入了面向对象的全部机制,并且保留了向下兼容性。
PHP的发展历史
PHP原始为Personal Home Page的缩写,现已经正式更名为 “PHP: Hypertext Preprocessor”的缩写。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf 为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。后来又用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。
PHP的现状
PHP作为最成熟的开源体系LAMP(Linux,Apache,MySQL,PHP)的重要一员,以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web程序员的欢迎和喜爱。
PHP中提供了作为编码语言所有的基本功能。此外,它还提供许多实用的功能,使得PHP比其他编程语言更适合动态网页的开发。针对企业级Web应用,PHP也不断地完善和增加新的功能。
PHP是开放源代码的,这意味着其代码的核心部分可以被免费使用。所有源码、文档可以在PHP官方网站上获得。用户可以自由复制、编译、分发其拷贝。任何一个用PHP编写的程序都属于用户自己,并且可以自行处理。
正式由于这种开源精神,才使PHP社区可以聚集众多的爱好者,也使得PHP有如此迅猛的发展。PHP的更新速度,以及发现和修正错误的速度是非常迅速的。可以看到,几乎每周都有一个新版本的PHP程序包发布。
目前,PHP的官方维护者和推动者Zend公司已经加快了PHP企业级应用的步伐。随着PHP5的应用不断扩大,Zend公司还将推出一个标准的PHP开发框架Zend Framework。通过这一框架,PHP开发者可以快速地构建Web应用。
PHP还具有优秀的平台兼容性。PHP源于UNIX系统平台,尤其是PHP、MySQL、 Apache和Linux组合,备受PHP爱好者的欢迎。不仅如此,PHP在Windows系列操作系统上也有出色的表现。其良好的程序界面、语言易用性等特点吸引了微软的开发人员。目前,有消息称未来的Windows . NET开发环境将集成PHP,这也意味着PHP的用户群将日益壮大。
PHP是广泛及通用的脚本语言,它尤其适合于Web开发。PHP是世界上主要的网络开发语言之一,运行在世界三分之一的服务器上。它是从雅虎到Facebook等公司的平台选择,也是共享主机上最广泛的开发平台,为世界上数百万的网站提供动力。
今天,已经有包括雅虎和亚马逊等在内的数百万网站,以及众多的开发人员和编程爱好者正在使用PHP。从最初的PHP/FI到现在的PHP5,PHP的发展是及其迅猛的,其未来的发展前景也必定令人瞩目。
随着PHP5版本性能的提升,以及面向对象功能的完善,PHP也逐渐开始于面向企业级应用。PHP的发展前景将无限广阔。
现在php5的最新版本为php5.4.3,较php5.3增强了安全特性,去掉了一些威胁安全的函数如global_register等,去掉了安全模式。
PHP的特点
PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
PHP安装它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
最重要的是PHP可以用C、C++进行程序的扩展!
PHP的优势
开放的源代码:所有的PHP源代码事实上都可以得到。
PHP是免费的:和其它技术相比,PHP本身免费且是开源代码。
php的快捷性:程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。
跨平台性强:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS下。
效率高:PHP消耗相当少的系统资源。
图像处理:用PHP动态创建图像,PHP图像处理默认使用GD2。不过也可以配置为使用image magick进行图像处理。
面向对象:在php4,php5 中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。
专业专注:PHP支持脚本语言为主,同为类C语言

Ⅹ 怎么让文件中的内容以utf8编码正常显示到php页面

输出的内容前面加上utf-8头部即可。
//输出数据到excel/txt文件
$fileName=date("YmdHis")."_data.txt";
//chr(0xEF).chr(0xBB).chr(0xBF)设置文件的bom,utf-8输出。
file_put_contents($fileName,chr(0xEF).chr(0xBB).chr(0xBF).$content);

阅读全文

与utf8bomphp相关的资料

热点内容
腾讯云应用服务器可以做什么 浏览:507
二次元表格编程 浏览:20
plc编程器保停 浏览:963
如何降低服务器的内存占用率 浏览:868
阿里云服务器是个什么意思 浏览:817
国内最好的数控编程培训学校 浏览:13
222乘104列是算法 浏览:159
程序员沟通正确姿势 浏览:969
魔玩app怎么视频推广 浏览:960
程序员抽奖送礼 浏览:458
北京java程序员薪资 浏览:658
如何创建网络平台或者app 浏览:355
python随机数生成控制概率 浏览:237
压缩机并联运行 浏览:899
两位单片机 浏览:63
四川音乐类投档线的算法 浏览:650
建行app如何改转账卡 浏览:27
android开发升级 浏览:299
要火社区app进不去怎么办 浏览:826
安卓手机上的自定义功能怎么用 浏览:230