最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年08月05日 09:54:38   作者:  
如果PHP文件頭部包含BOM信息,就會(huì)輸出一個(gè)空白,在很多時(shí)候會(huì)帶來(lái)問(wèn)題,比如我們session無(wú)法工作、cookie無(wú)法設(shè)置等等問(wèn)題

原理:
UTF8文件,微軟為了增加一個(gè)識(shí)別信息,有了BOM這個(gè)東西:BOM —— Byte Order Mark,缺省在Windows等平臺(tái)上編輯的UTF8文件會(huì)在頭部增加3個(gè)字節(jié)的標(biāo)記信息,我們PHP引擎在處理的時(shí)候會(huì)完整讀取整個(gè)PHP代碼文檔, 如果PHP文件頭部包含BOM信息,就會(huì)輸出一個(gè)空白,在很多時(shí)候會(huì)帶來(lái)問(wèn)題,比如我們session無(wú)法工作、cookie無(wú)法設(shè)置等等問(wèn)題。

解決方法:
把頭部BOM的3個(gè)字節(jié)信息識(shí)別出來(lái),然后剔除掉。不過(guò)一般情況我們不知道哪個(gè)文件有BOM,或者是有很多文件,這個(gè)時(shí)候,就需要進(jìn)行批量處理了,下面代碼主要就是展現(xiàn)了批量處理的情況,應(yīng)該會(huì)對(duì)大家工作中有幫助。

執(zhí)行方法:
設(shè)置一個(gè)路徑,然后直接執(zhí)行就行。

復(fù)制代碼 代碼如下:

<?php
// 設(shè)定你要清除BOM的根目錄(會(huì)自動(dòng)掃描所有子目錄和文件)
$HOME = dirname(__FILE__);
// 如果是Windows系統(tǒng),修改為:$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);
  }
 }
}
// 搜索當(dāng)前文件是否有BOM
function SearchBOM($string) {
  if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
  return false;
}
?>
</body>
</html>

相關(guān)文章

  • Can''t create/write to file ''C:\WINDOWS\TEMP\...MYSQL報(bào)錯(cuò)解決方法

    Can''t create/write to file ''C:\WINDOWS\TEMP\...MYSQL報(bào)錯(cuò)解決方法

    Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL報(bào)錯(cuò)解決方法,參考下面的方法即可。
    2011-06-06
  • PHP mysql與mysqli事務(wù)使用說(shuō)明 分享

    PHP mysql與mysqli事務(wù)使用說(shuō)明 分享

    首先, mysqli 連接是永久連接,而mysql是非永久連接。什么意思呢? mysql連接每當(dāng)?shù)诙问褂玫臅r(shí)候,都會(huì)重新打開(kāi)一個(gè)新的進(jìn)程,而mysqli則只使用同一個(gè)進(jìn)程,這樣可以很大程度的減輕服務(wù)器端壓力
    2013-08-08
  • php中加密解密DES類的簡(jiǎn)單使用方法示例

    php中加密解密DES類的簡(jiǎn)單使用方法示例

    這篇文章主要介紹了php中加密解密DES類的簡(jiǎn)單使用方法,結(jié)合實(shí)例形式分析了php中加密解密DES類的基本定義與使用方法,需要的朋友可以參考下
    2020-03-03
  • phpmailer綁定郵箱的實(shí)現(xiàn)方法

    phpmailer綁定郵箱的實(shí)現(xiàn)方法

    這篇文章主要介紹了phpmailer綁定郵箱的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了phpmailer綁定郵箱的配置、功能實(shí)現(xiàn)與相關(guān)操作技巧,需要的朋友可以參考下
    2016-12-12
  • PHP函數(shù)篇之掌握ord()與chr()函數(shù)應(yīng)用

    PHP函數(shù)篇之掌握ord()與chr()函數(shù)應(yīng)用

    ord()函數(shù)把字符轉(zhuǎn)換為十進(jìn)制數(shù)字,chr()函數(shù)把十進(jìn)制數(shù)字轉(zhuǎn)化為字符,在二進(jìn)制,八進(jìn)制,十進(jìn)制與十六進(jìn)制之間充當(dāng)橋梁的作用
    2011-12-12
  • php實(shí)現(xiàn)向javascript傳遞數(shù)組的方法

    php實(shí)現(xiàn)向javascript傳遞數(shù)組的方法

    這篇文章主要介紹了php實(shí)現(xiàn)向javascript傳遞數(shù)組的方法,涉及php數(shù)組轉(zhuǎn)json傳遞到j(luò)avascript的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • PHP如何拋出和接收錯(cuò)誤的詳細(xì)指南

    PHP如何拋出和接收錯(cuò)誤的詳細(xì)指南

    在PHP中,拋出和接收錯(cuò)誤通常涉及異常處理機(jī)制,以及錯(cuò)誤和異常的處理函數(shù),以下是如何在PHP中拋出和接收錯(cuò)誤的詳細(xì)指南,通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • php實(shí)現(xiàn)用戶注冊(cè)密碼的crypt加密

    php實(shí)現(xiàn)用戶注冊(cè)密碼的crypt加密

    這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)用戶注冊(cè)密碼的crypt加密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • PHP常用函數(shù)之獲取漢字首字母功能示例

    PHP常用函數(shù)之獲取漢字首字母功能示例

    這篇文章主要介紹了PHP常用函數(shù)之獲取漢字首字母功能,結(jié)合實(shí)例形式分析了php漢字編碼轉(zhuǎn)換、截取、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • 處理php高并發(fā)時(shí)遇到死鎖的解決方案

    處理php高并發(fā)時(shí)遇到死鎖的解決方案

    當(dāng)我們?cè)谔幚鞵HP高并發(fā)時(shí)遇到死鎖,需要先進(jìn)行確認(rèn)、定位、避免和解鎖等一系列步驟,綜合考慮采取合適的解決方案,所以本文將給大家介紹處理php高并發(fā)時(shí)遇到死鎖的解決方案,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

盐津县| 平山县| 博野县| 荃湾区| 昂仁县| 都昌县| 宜宾县| 拜城县| 朝阳市| 栖霞市| 香格里拉县| 桑日县| 灵璧县| 上蔡县| 盐亭县| 石屏县| 宜川县| 南木林县| 吴江市| 滦南县| 襄汾县| 荥经县| 水城县| 墨玉县| 海原县| 治多县| 城固县| 项城市| 永修县| 华坪县| 博野县| 福州市| 蒙城县| 台东市| 保靖县| 江阴市| 衡阳市| 休宁县| 连平县| 浑源县| 琼海市|