Отправить заявку

Как удалить 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. Его можно записать обратно в файл или делать далее любые нужные действия.

Другие публикации