Untuk mengabaikan file dengan BOM (Byte Order Mark) di PHP, Anda dapat menggunakan pendekatan berikut
- 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");
- 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);
- 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 }
- Jika BOM ditemukan, lewati dengan mencari byte keempat dari file
if ($bom === "\xEF\xBB\xBF") { fseek($file, 3); }
- Sekarang Anda dapat membaca dan memproses sisa file seperti biasa
while (!feof($file)) { $line = fgets($file); // process line }
- 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
Bagaimana cara menyimpan file tanpa BOM?
Bagaimana saya bisa menghapus BOM dari UTF
Bagaimana cara menghapus I >> dari awal file?
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.