trim() для файлов

Pustota

Новичок
trim() для файлов

В поиске поискал - не нашел.

Есть ли что-то анологичное trim() но для файла?
Дело в том, что есть XML, довольно большой 70-100 метров, и в нем в начале и в конце пустые строки. Хочу их убрать. А то ругается парсер, что XML начинается не с
<?xml ...

Весь файл запихивать в строку и пересохранять не катит. Есть что-то более изящное?
 

tz-lom

Продвинутый новичок
индусометод:
$a = trim(file_get_contents($filename));

рукамиметод:
mcedit $filename
 

Pustota

Новичок
Не, большие объемы в переменную кидать...
Дополню немного вопрос.

Немного покумекав, решил, что меня спасет CURLOPT_WRITEFUNCTION так как я выкачиваю файлы через curl.
Я выкачиваю XML файл, но в начале файла перед <?xml идет много пустых строк. Мне нужно их удалить.
Вот код.

PHP:
<?
function trimmed($ch, $str) {
$len=trim($str);
return $len;
}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://site.ru/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_WRITEFUNCTION,"trimmed"); 

curl_exec($ch);

curl_close($ch);
?>
Но я не догоню как сделать функцию обратного вызова. Что мне нужно написать в функции trimmed чтобы мне приходил файл без этих пустых строк в начале?
 

dimagolov

Новичок
Pustota, ты понимаешь, что любое использование ф-ии trim будет требовать объем памяти как минимум вдвое больший, чем размер файла?

читай построчно и пустые строки просто не записывай, все равно построчное чтение будет буфферизироваться на уровне ОС
 

Pustota

Новичок
Угу, уже переделал.
Методом научного тыка выяснил, что и загружается файл пачками. что даёт в функции trimmed использовать
echo trim(str);

Всем спасибо, проблема решена.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
-))) прикол в том, что загружается файл не пачками, а чанками, и чанк может оборваться посреди тега

если ты сделаешь трим такому чанку, то побьешь XML и фсьо
 

fixxxer

К.О.
Партнер клуба
на концевые пробелы побоку

так что достаточно делать ltrim пока длина результата нулевая.
 

Pustota

Новичок
Да, правильнее наверно ltrim заюзать. Уже увидел, что XML бьется. Правда решил это совсем убиранием перевода строки. Теперь XML в одну строку, но усе пашет.
 
Сверху