国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

PHP 去掉 utf8格式文件中的bom頭部

2024-05-04 21:47:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我們有時(shí)要去掉utf8文檔中頭部我們經(jīng)常會(huì)需要手工清除了,下面我整理了幾個(gè)利用php程序清除 utf8格式文件中的bom頭部方法.

PHP實(shí)例1,代碼如下:

  1. /** 
  2.  * 去掉文件中的 bom頭 
  3.  * @var 0.1 
  4.  * @author Chenwp 
  5.  */ 
  6. function clearbom($contents){     
  7.     //UTF8 去掉文本中的 bom頭 
  8.     $BOM = chr(239).chr(187).chr(191);  
  9.     return str_replace($BOM,'',$contents);     
  10.  
  11. /** 
  12.  * 去掉文件中的bom頭 
  13.  * @param object $fileName Description 
  14.  * @return object    Description 
  15.  */ 
  16. function clearfilebom($fileName){ 
  17.     $c = file_get_contents($fileName); 
  18.     $c = clearbom($c); 
  19.     file_put_contents($fileName,$c); 

PHP實(shí)例例2,代碼如下:

  1. <?php 
  2.  
  3. //此文件用于快速測(cè)試UTF8編碼的文件是不是加了BOM,并可自動(dòng)移除 
  4.  
  5. $basedir="."//修改此行為需要檢測(cè)的目錄,點(diǎn)表示當(dāng)前目錄 
  6. $auto=1; //是否自動(dòng)移除發(fā)現(xiàn)的BOM信息。1為是,0為否。 
  7.  
  8. //以下不用改動(dòng) 
  9.  
  10. if ($dh = opendir($basedir)) { 
  11.        while (($file = readdir($dh)) !== false) { 
  12.        if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>"
  13.        } 
  14.        closedir($dh); 
  15.  
  16. function checkBOM ($filename) { 
  17.        global $auto
  18.        $contents=file_get_contents($filename); 
  19.        $charset[1]=substr($contents, 0, 1);  
  20.        $charset[2]=substr($contents, 1, 1);  
  21.        $charset[3]=substr($contents, 2, 1);  
  22.        if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) { 
  23.             if ($auto==1) { 
  24.                   $rest=substr($contents, 3); 
  25.                   rewrite ($filename$rest); 
  26.                   return ("<font color=red>BOM found, automatically removed.</font>"); 
  27.             } else { 
  28.                   return ("<font color=red>BOM found.</font>"); 
  29.             } 
  30.         }  
  31.          else return ("BOM Not Found."); 
  32.  
  33. function rewrite ($filename$data) { 
  34.         $filenum=fopen($filename,"w"); 
  35.         flock($filenum,LOCK_EX); 
  36.         fwrite($filenum,$data); 
  37.         fclose($filenum); 
  38. //結(jié)束 
  39. ?> 

PHP實(shí)例3,代碼如下:

  1. <?php  
  2. // 設(shè)定你要清除BOM的根目錄(會(huì)自動(dòng)掃描所有子目錄和文件) 
  3. $HOME = dirname(__FILE__); 
  4. // 如果是Windows系統(tǒng),修改為:$WIN = 1; 
  5. $WIN = 0; 
  6. ?> 
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  8. <html xmlns="http://www.w3.org/1999/xhtml"
  9. <head> 
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  11. <title>UTF8 BOM 清除器</title> 
  12. <style> 
  13. body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; } 
  14. .FOUND { color: #F30; font-size: 14px; font-weight: bold; } 
  15. </style> 
  16. </head> 
  17. <body> 
  18. <?php 
  19. $BOMBED = array(); 
  20. RecursiveFolder($HOME); 
  21. echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">'
  22. foreach ($BOMBED as $utf) { echo $utf ."<br />n"; } 
  23. echo '</p>'
  24. // 遞歸掃描 
  25. function RecursiveFolder($sHOME) { 
  26.  global $BOMBED$WIN
  27.  $win32 = ($WIN == 1) ? "/" : "/"; 
  28.  $folder = dir($sHOME); 
  29.  $foundfolders = array(); 
  30.  while ($file = $folder->read()) { 
  31.   if($file != "." and $file != "..") { 
  32.    if(filetype($sHOME . $win32 . $file) == "dir"){ 
  33.     $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file
  34.    } else { 
  35.     $content = file_get_contents($sHOME . $win32 . $file); 
  36.     $BOM = SearchBOM($content); 
  37.     if ($BOM) { 
  38.      $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file
  39.      // 移出BOM信息 
  40.      $content = substr($content,3); 
  41.      // 寫(xiě)回到原始文件 
  42.      file_put_contents($sHOME . $win32 . $file$content); 
  43.     } 
  44.    } 
  45.   } 
  46.  } 
  47.  $folder->close(); 
  48.  if(count($foundfolders) > 0) { 
  49.   foreach ($foundfolders as $folder) { 
  50.    RecursiveFolder($folder$win32); 
  51.   } 
  52.  } 
  53. // 搜索當(dāng)前文件是否有BOM 
  54. function SearchBOM($string) {  
  55.   if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true; 
  56.   return false;  
  57. ?> 
  58. </body> 
  59. </html> 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洛南县| 沙坪坝区| 甘泉县| 都安| 皋兰县| 乡宁县| 正阳县| 大同市| 互助| 江油市| 铜鼓县| 巴彦淖尔市| 靖安县| 宁阳县| 托克逊县| 含山县| 商水县| 秦安县| 凌海市| 五常市| 五河县| 宁乡县| 衡山县| 建平县| 潼关县| 子洲县| 漳平市| 馆陶县| 邯郸县| 定陶县| 陇西县| 唐山市| 南昌县| 许昌县| 区。| 榕江县| 桂东县| 邹城市| 宣汉县| 雅安市| 大庆市|