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

首頁 > 編程 > PHP > 正文

PHP實現UTF-8文件BOM自動檢測與移除實例

2020-03-22 18:38:40
字體:
來源:轉載
供稿:網友
本文實例講述了PHP實現UTF-8文件BOM自動檢測與移除的方法。分享給大家供大家參考。具體實現方法如下:BOM信息是文件開頭的一串隱藏的字符,用于讓某些編輯器識別這是個UTF-8編碼的文件。但PHP在讀取文件時會把這些字符讀出,從而形成了文件 開頭含有一些無法識別的字符的問題。比如用UTF-8格式保存的生成圖片的PHP文件,因為文件頭隱藏的BOM信息也被下發,導致生成的 圖片數據不對,瀏覽器無法識別。要檢測一個UTF-8文件是否含有BOM信息,就是檢測文件開頭的字三個符,是否為0xEF, 0xBB, 0xBF。下面這個小程序,用戶遍歷某個目錄下所有文件,并檢測是否加了BOM。
復制代碼 代碼如下: php
//此文件用于快速測試UTF8編碼的文件是不是加了BOM,并可自動移除
//By Bob Shen$basedir="."; //修改此行為需要檢測的目錄,點表示當前目錄
$auto=1; //是否自動移除發現的BOM信息。1為是,0為否。//以 下不用改動if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." br
}
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 found, automatically removed. /font
} else {
return (" font color=red BOM found. /font
}
}
else return ("BOM Not Found.");
}function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
將以上代碼另存為del_bom.php,修改需要檢測的目錄后運行。這樣可能有助于檢測是哪個文件帶有了BOM信息導致所有頁面開頭都有 那么一段空白。把下面 代碼保存為 bom.php 記得保存為 utf8 格式
復制代碼 代碼如下: meta http-equiv="Content-Type" content="text/html; charset=utf-8"
h3 echo $_POST["dir"]; 目錄下的檢測結果 /h3
php
//此文件用于快速測試UTF8編碼的文件是 不是加了BOM,并可自動移除
//By bob 老大
//風吟修改
$目錄= str_replace(" ", "|", $_POST["dir"]);//接受提交的路徑數據
$basedir="$目錄"; //修改此行為需要檢測的目錄,點表示當前目錄
$auto=1; //是否自動移除發現的BOM信息。1為是,0為否。
//以下不用改動
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." br
}
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 found. /font
}
}
else return ("--沒有檢查到Bom.");
}
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
form action="" method="POST"
目錄: input type="text" name="dir" /
input type="submit" value="檢測目錄"
/form
請 輸入文件夾名比如 plugin/fanfou 后面不需要加/。如果要檢測根目錄輸入“ . ” . 是小數點 提交既可
/br 希望本文所述對大家的PHP程序設計有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 简阳市| 嘉定区| 兴隆县| 大邑县| 宽甸| 新龙县| 罗源县| 黎川县| 斗六市| 万宁市| 盱眙县| 娱乐| 镇平县| 安康市| 北海市| 尼勒克县| 衡阳市| 赣州市| 恩平市| 敦煌市| 阳城县| 乌兰察布市| 翁源县| 临洮县| 兴安县| 通州市| 泰宁县| 阿克苏市| 蒙阴县| 宁蒗| 馆陶县| 峨山| 呼伦贝尔市| 丹巴县| 绥阳县| 乐亭县| 巴塘县| 九台市| 阆中市| 青神县| 晴隆县|