Cara php howto mengabaikan file dengan BOM dengan Contoh

Untuk mengabaikan file dengan BOM (Byte Order Mark) di PHP, Anda dapat menggunakan pendekatan berikut

  1. Buka file dalam mode biner menggunakan fungsi fopen(). Ini akan memungkinkan Anda untuk membaca dan menulis file sebagai aliran byte, bukan sebagai rangkaian karakter

$file = fopen("file.txt", "rb");

  1. Baca beberapa byte pertama file untuk memeriksa BOM. BOM adalah urutan byte yang muncul di awal file untuk menunjukkan urutan byte dan penyandian file

$bom = fread($file, 3);

  1. Periksa nilai variabel $bom untuk menentukan apakah itu berisi BOM. BOM untuk file yang disandikan UTF-8 adalah urutan byte
    $bom = fread($file, 3);
    0

if ($bom === "\xEF\xBB\xBF") {
    // BOM found
}

  1. Jika BOM ditemukan, lewati dengan mencari byte keempat dari file

if ($bom === "\xEF\xBB\xBF") {
    fseek($file, 3);
}

  1. Sekarang Anda dapat membaca dan memproses sisa file seperti biasa

while (!feof($file)) {
    $line = fgets($file);
    // process line
}

  1. Ingatlah untuk menutup file ketika Anda selesai

fclose($file);

Berikut adalah contoh kode lengkapnya.

$file = fopen("file.txt", "rb");
$bom = fread($file, 3);
if ($bom === "\xEF\xBB\xBF") {
    fseek($file, 3);
}
while (!feof($file)) {
    $line = fgets($file);
    // process line
}
fclose($file);

Kode ini akan membuka file dalam mode biner, memeriksa BOM, dan melewatkannya jika ada. Ini kemudian akan membaca dan memproses sisa file seperti biasa

Cara php cara mengabaikan file dengan BOM dengan Contoh - cara php mengabaikan file dengan BOM
<?php 
function fopen_utf8 ($filename) { 
    $file = @fopen($filename, "r"); 
    $bom = fread($file, 3); 
    if ($bom != b"\xEF\xBB\xBF") 
    { 
        return false; 
    } 
    else 
    { 
        return true; 
    } 
} 

function file_array($path, $exclude = ".|..|design", $recursive = true) { 
    $path = rtrim($path, "/") . "/"; 
    $folder_handle = opendir($path); 
    $exclude_array = explode("|", $exclude); 
    $result = array(); 
    while(false !== ($filename = readdir($folder_handle))) { 
        if(!in_array(strtolower($filename), $exclude_array)) { 
            if(is_dir($path . $filename . "/")) { 
                                // Need to include full "path" or it's an infinite loop 
                if($recursive) $result[] = file_array($path . $filename . "/", $exclude, true); 
            } else { 
                if ( fopen_utf8($path . $filename) ) 
                { 
                    //$result[] = $filename; 
                    echo ($path . $filename . "<br>"); 
                } 
            } 
        } 
    } 
    return $result; 
} 

$files = file_array("."); 
?>

Bagaimana cara menyimpan file tanpa BOM?

Untuk memastikan file PHP Anda tidak memiliki BOM, ikuti langkah berikut. .
Unduh dan instal editor teks gratis yang kuat ini. Notepad++
Buka file yang ingin Anda verifikasi/perbaiki di Notepad++
Di menu atas pilih Encoding > Convert to UTF-8 (opsi tanpa BOM)
Simpan file

Bagaimana saya bisa menghapus BOM dari UTF

Unduh Notepad++
Untuk memeriksa apakah ada karakter BOM, buka file di Notepad ++ dan lihat di pojok kanan bawah. Jika tertulis UTF-8-BOM maka file tersebut berisi karakter BOM
Untuk menghapus karakter BOM, buka Encoding dan pilih Encode in UTF-8
Simpan file dan coba impor lagi

Bagaimana cara menghapus I >> dari awal file?

Buka file-file ini di beberapa editor yang tepat (yang mengenali BOM) seperti Eclipse
Ubah penyandian file ke ISO (klik kanan, properti)
Potong  dari awal file, simpan
Ubah penyandian file kembali ke UTF-8

Apa itu UTF tanpa BOM?

Pengkodean UTF-8 tanpa BOM memiliki properti bahwa sebuah dokumen yang hanya berisi karakter dari rentang US-ASCII dikodekan byte-untuk-byte dengan cara yang sama seperti . Dokumen semacam itu dapat diproses dan dipahami saat disandikan sebagai UTF-8 atau sebagai US-ASCII. . Such a document can be processed and understood when encoded either as UTF-8 or as US-ASCII.