《PHP編程:PHP實現UTF-8文件BOM自動檢測與移除實例》要點:
本文介紹了PHP編程:PHP實現UTF-8文件BOM自動檢測與移除實例,希望對您有用。如果有疑問,可以聯系我們。
PHP教程本文實例講述了PHP實現UTF-8文件BOM自動檢測與移除的辦法.分享給大家供大家參考.具體實現辦法如下:
PHP教程BOM信息是文件開頭的一串暗藏的字符,用于讓某些編輯器識別這是個UTF-8編碼的文件.但PHP在讀取文件時會把這些字符讀出,從而形成了文件 開頭含有一些無法識別的字符的問題.
PHP教程比如用UTF-8格式保存的生成圖片的PHP文件,因為文件頭暗藏的BOM信息也被下發,導致生成的 圖片數據不對,瀏覽器無法識別.
PHP教程要檢測一個UTF-8文件是否含有BOM信息,就是檢測文件開頭的字三個符,是否為0xEF, 0xBB, 0xBF.下面這個小程序,用戶遍歷某個目錄下所有文件,并檢測是否加了BOM.
PHP教程$basedir="."; //修改此行為需要檢測的目錄,點表示當前目錄
$auto=1; //是否自動移除發現的BOM信息.1為是,0為否.
PHP教程//以 下不用改動
PHP教程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);
}
PHP教程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教程function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
PHP教程把下面 代碼保存為 bom.php? 記得保存為 utf8 格式
PHP教程<form action="" method="POST">
目錄: <input type="text" name="dir" />
<input type="submit" value="檢測目錄" >
</form>
請 輸入文件夾名比如 plugin/fanfou 后面不需要加/.如果要檢測根目錄輸入“ . ”? . 是小數點 提交既可
</br>
PHP教程希望本文所述對大家的PHP程序設計有所贊助.
《PHP編程:PHP實現UTF-8文件BOM自動檢測與移除實例》是否對您有啟發,歡迎查看更多與《PHP編程:PHP實現UTF-8文件BOM自動檢測與移除實例》相關教程,學精學透。維易PHP學院為您提供精彩教程。