[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: удаление BOM из utf8
LRCenter
Удаление из utf-8 текстового файла BOM.

$f=fopen($db,'w+');
$tfl=fread($f, filesize($db));
$tfl=str_replace("\xEF\xBB\xBF","",$tfl);
fwrite($f, $tfl)
fclose ($f);



Если вынести чтение в отдельный процесс все работает, а так нет, т.е. он обнуляется прежде чем прочитаться несмотря на w+ и то что fread идет перед fwrite-ом.

Можно ли прочитать из файла и записать в него же за один fopen-процесс?



Спустя 2 часа, 52 минуты, 23 секунды (9.02.2011 - 00:08) waldicom написал(а):
get_file_contents + put_file_contents ?

Спустя 7 часов, 20 минут, 20 секунд (9.02.2011 - 07:28) LRCenter написал(а):
Если так только.

Спустя 1 год, 1 месяц, 19 дней, 6 часов, 49 минут, 59 секунд (28.03.2012 - 13:18) d.v.e написал(а):
Можно его не удалять, а пропускать при чтении, что бы не лопатить весь файл, особенно если он достаточно большой. Я обычно так и делаю.
Для разбора csv примерно так:


if (($handle = fopen('file.csv', "r")) !== false) { // открываем файл
if (fread($handle, 3) == "\xEF\xBB\xBF") { // проверяем наличие BOM (bite order mark)
// далее пропускаем, если есть
// fseek ($handle, 0, SEEK_CUR); // с текущего положения указателя

fseek ($handle, 3); // или с начала файла
}
// для получения заголовка, в котором как правило перечислены имена полей
$header_in_file = fgetcsv($handle, 0, ";"); // преобразуем первую строку в массив
// Или читаем весь файл
/*
while (!feof($handle)) {
$data[] = fgetcsv($handle, 0, ";",'"');
}
*/

}

Спустя 4 часа, 18 минут, 12 секунд (28.03.2012 - 17:37) twin написал(а):


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.