導航:首頁 > 編程語言 > 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相關的資料

熱點內容
python導出sap 瀏覽:513
車智匯app如何下載 瀏覽:434
python如何將圖片輸出到雲伺服器 瀏覽:838
貴陽螺桿壓縮冷凝機組組成 瀏覽:115
掃描製作pdf 瀏覽:515
2016奇駿車機如何安裝app 瀏覽:764
phpvc9x64 瀏覽:73
蜜語星球解壓 瀏覽:476
c語言編譯器怎麼打不開 瀏覽:818
海印程序員 瀏覽:648
為什麼華為手機找不到伺服器 瀏覽:664
pdf增減 瀏覽:608
雲伺服器怎麼公網架設網站 瀏覽:91
pythonrequests慢 瀏覽:140
excel保存沒有pdf 瀏覽:922
冰箱壓縮機管囗示意圖 瀏覽:497
許振民編譯局 瀏覽:625
雙網路加什麼伺服器好用 瀏覽:211
linux命令中文 瀏覽:839
python怎麼做物聯網 瀏覽:731