Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > деление файла


Автор: mr.fox 31.10.2005, 00:24
у меня есть большой файл, скажем в нем 3000 строк. его надо прочитать и по 500 строк положить в новые файлы. вот что у меня получилось а дальше я застрял
Код

$handle=fopen('1.txt','r');
if ($handle) {
   while (!feof($handle)) {
       $buffer = fgets($handle);
    
   }
   fclose($handle);
}

Кто знает, помогите!

Автор: Рейкин 31.10.2005, 01:02
Код

<?
$open=file("text.txt");
$titcount=count($opentitle);
for ($n=$titcount-1; $n>=$titcount-500; $n--)
    {
    list($a,$s,$d,$f,$g,$h)=split("***",$opentitle[$n]); // считываем
    $str = $str."$a***$s***$d***$f***$g***$h\r\n"; // создаём содержимое будущего файла
    }        
    
    $fp = fopen ("text1.txt", "w"); // я бы создал заранее файлы (например, text1.txt, text2.txt...), права 666 не забываем.
    fputs($fp,$str);
    fclose($fp);
    }
///
for ($n=$titcount-501; $n>=$titcount-1000; $n--)  // здесь берём новый отсек
    {
    list($a,$s,$d,$f,$g,$h)=split("***",$opentitle[$n]);
    $str1 = $str1."$a***$s***$d***$f***$g***$h\r\n"; // название строки тоже меняем. А то продолжит наполнение
    }        
    
    $fp = fopen ("text2.txt", "w"); // не забываем поменять название файла, а то можно перезаписать предыдущий
    fputs($fp,$str1); // и здесь не забываем
    fclose($fp);
    }
... // и так далее, проблем быть у вас не должно.
?>


Спецы могут назвать это отстойным способом, но сработать должен.

Взял отсчёт строк в обратном порядке (редактировал имеющийся скрипт). Можете сами поменять, чтоб с 0 и выше.

Автор: Mal Hack 1.11.2005, 00:18
ИМХО, проще - читаем через file и делаем цикл по строкам.
Делаем внутренний счетчик файлов K например.
В цикле делаем проверку if ( $i % 500 == 0 ) увеличиваем K
Ну и закрываем старый файл и открываем следующий для записи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)