Friday, August 5, 2022

[PHP] 用程式檢查文字檔編碼是否為 "UTF-8 碼 (檔首有BOM)"

UTF-8 的文檔分為 "檔首有BOM" 及 "檔首無BOM" 兩種,如果遇到程式讀取使用者上傳的文檔,明明用記事本打開第一碼是A(舉例),但用程式讀內容抓到的第一碼卻不是A,可能這個檔案就是檔首含BOM的文件,檢查方式很簡單,如下....

$f = '1.txt';
$c = file_get_contents($f);
$str1 = substr($c, 0, 1);
$str2 = substr($c, 1, 1);
$str3 = substr($c, 2, 1);
if (ord($str1 == 239 && $str2 == 187 && $str3 == 191) {
  echo '此文件檔首含BOM';
  $chk = 'y';
}
//如果要取出不含BOM的內容
if ($chk == 'y') {
  $contents = substr($c, 3);  //排除前三個位元之後就是乾淨的文字內容了
}

No comments:

Post a Comment