Как удалить BOM из файла UTF при помощи PHP
UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — распространённая кодировка символов Юникода, совместимая с 8-битными форматами передачи текста. Нашла широкое применение в операционных системах и веб-пространстве. Многие программы Windows (включая Блокнот) добавляют байты EF16, BB16, BF16 в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами.
<?php
/*
* переменная $text - исходный текст
*/
function removeBOM($text="") {
if(substr($text, 0, 3) == pack('CCC', 0xef, 0xbb, 0xbf)) {
$text= substr($text, 3);
}
return $text;
}
/*
* file.php - файл, в котором нужно удалить BOM
*/
$text=file_get_contents('file.php');
$text_without_bom = removeBOM($text);
?>
Теперь в переменной $text_without_bom у нас текст без BOM. Его можно записать обратно в файл или делать далее любые нужные действия.
Источник: ArtKiev Design