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

首頁 > 語言 > PHP > 正文

PHP版UTF-8文件BOM自動檢測移除程序

2024-09-04 11:50:09
字體:
來源:轉載
供稿:網友

BOM信息是文件開頭的一串隱藏的字符,用于讓某些編輯器識別這是個UTF-8編碼的文件。但PHP在讀取文件時會把這些字符讀出,從而形成了文件開頭含有一些無法識別的字符的問題。

比如用UTF-8格式保存的生成圖片的PHP文件,因為文件頭隱藏的BOM信息也被下發,導致生成的圖片數據不對,瀏覽器無法識別。

要檢測一個UTF-8文件是否含有BOM信息,就是檢測文件開頭的字三個符,是否為0xEF, 0xBB, 0xBF。下面這個小程序,用戶遍歷某個目錄下所有文件,并檢測是否加了BOM。

<?
//此文件用于快速測試UTF8編碼的文件是不是加了BOM,并可自動移除
//By Bob Shen

$basedir="."; //修改此行為需要檢測的目錄,點表示當前目錄
$auto=1; //是否自動移除發現的BOM信息。1為是,0為否。

//此文件用于快速測試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信息導致所有頁面開頭都有那么一段空白。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壶关县| 衡阳县| 安塞县| 施秉县| 昌邑市| 舒兰市| 五大连池市| 东海县| 邯郸县| 昌邑市| 吴忠市| 淄博市| 姚安县| 白玉县| 竹山县| 视频| 明溪县| 沽源县| 临沂市| 杭州市| 康马县| 惠来县| 阳西县| 万安县| 四平市| 镇坪县| 门头沟区| 景东| 沙湾县| 屏南县| 澎湖县| 农安县| 英吉沙县| 化德县| 仙桃市| 霸州市| 茌平县| 乌拉特前旗| 容城县| 平湖市| 周宁县|