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


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



Написать комментарий через:

 
               
  • Локальный блог
  •  
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

Один отзыв на «Как удалить BOM из файла UTF при помощи PHP»

  1. Константин пишет:

    Спасибо! У меня была проблема наоборот – нужно было записать BOM – и всё получилось! Спасибо ВАМ))

 
Статусы для соц.сетей на ArtKiev Design Studio