Последнее обновление:
Как добавить ВОМ средствами РНР?
BOM – это три байта, расположенные в самом начале файла. Эти три байта являются маркером того, что содержимое файла закодировано в кодировке UTF-8 с ВОМ.
Примечание: содержимое файла может быть также закодировано в UTF-8, но без BOM. В таком случае байты, обозначающие BOM, в начале файла будут отсутствовать.
В некоторых случаях BOM необходим, чтобы программа, открывающая файл, уже точно знала, в какой кодировке он закодирован. Однако, иногда BOM противопоказан – см. ниже.
Сам ВОМ представляет собой следующую совокупность байт: \xEF\xBB\xBF
Чтобы программа, читающая файл (например, текстовый редактор), восприняла его в кодировка UTF-8 c BOM, эти три байта должна идти В САМОМ НАЧАЛЕ ФАЙЛА.
Вот код, который добавляет BOM к файлу средствам РНР:
file_put_contents('/путь/файл.txt', "\xEF\xBB\xBF" . $text);
Эта команда добавляет к началу содержимого переменной $text
указанные три байта и после этого – записывает его в файл с именем файл.txt
.
Примечание: эти три байта не будут заметны, например, в редакторе Notepad или Word. Но, скажем, Notepad++ при их наличии укажет, что файл (точнее, его содержимое) закодирован в кодировке UTF-8 c BOM. Чтобы визуально посмотреть эти байты, придется использовать какой-нибудь низкоуровневый (шестнадцатеричный) редактор.
В каких случаях BOM противопоказан?
Например, в файлах, содержащих программы на языке РНР. Дело в том, что если BOM содержится в таком файле, то при его запуске эти три байта будут сразу отправлены клиенту (в браузер). Обратим внимание: это произойдет еще ДО того, как программа выполнит какие-либо действия. Всё бы ничего, но в РНР есть команды (например, команда старта сессий), перед запуском которых не должно производиться никакого вывода (клиенту). Иначе РНР выдаст предупреждение, а то и ошибку. Поэтому файлы с программами РНР не должны содержать BOM.