Построчное чтение

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Помогите, пожалуйста, 300 метровый файлик спарсить по-строчно.
$t=file ("t.txt");
Ругается на нехватку памяти.
 
конечно будет ругаться ... ф-ция file читает весь файл и построчно преобразовывает его в массив...

используйте ф-цию fgets для чтения куска файла

 
PHP:
$file = fopen('t.txt', 'r');
while (!feof($file)){
    $line = fgets($file);// вот твоя строка
}
 
в php.ini подправьте значение memory_limit
 
Здравствуйте.
Помогите, пожалуйста, 300 метровый файлик спарсить по-строчно.
$t=file ("t.txt");
Ругается на нехватку памяти.
я такие фалйы на ассемблере парсил. Быстрее не придумаешь.
 
берёт из одного файла строку, парсит и сохраняет в другой файл
PHP:
//функция парсера
function myfunc($str){
    if(!preg_match('/blogs\.mail\.ru/i', $str)){
        return false;
    }
    return true;
}
//файл для чтения
$in=fopen("large.txt","r");
//файл для записи
$out=fopen("out.txt","w");
//цикл по строкам
while($line=fgets($in)){ 
    if(myfunc($line))fwrite($out, $line);
}
fclose($in);
fclose($out);
echo 'end';
справится с файлами любого размера
 
берёт из одного файла строку, парсит и сохраняет в другой файл
PHP:
//функция парсера
function myfunc($str){
    if(!preg_match('/blogs\.mail\.ru/i', $str)){
        return false;
    }
    return true;
}
//файл для чтения
$in=fopen("large.txt","r");
//файл для записи
$out=fopen("out.txt","w");
//цикл по строкам
while($line=fgets($in)){ 
    if(myfunc($line))fwrite($out, $line);
}
fclose($in);
fclose($out);
echo 'end';
справится с файлами любого размера
1) Для чего тут регулярное выражение, если строку можно сравнить через stripos?
2) while($line=fgets($in)) лучше бы заменить на while(!feof($in))
 
Это конечно можно, но 300 метров в память забивать бред.

ну как это бред - например мне надо на пк "разобрать" файл 100мб - есть варианты разве как считывать его частями для обработки? Если да подскажите - буду благодарен, так как я не знаю подобного. Вроде как нет возможности частичного считывания файла, или?
 
ну как это бред - например мне надо на пк "разобрать" файл 100мб - есть варианты разве как считывать его частями для обработки? Если да подскажите - буду благодарен, так как я не знаю подобного. Вроде как нет возможности частичного считывания файла, или?
Ты чем смотришь вообще? Вариант от Polyetilen как раз демонстрирует построчное чтение файла.
 
Назад
Сверху