Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбить один файл на четыре
 
 автор: pornocat   (07.06.2007 в 12:58)   письмо автору
 
 

Есть документ text.txt размер 1000 строк!!!
Подскажите пожалуйста скриптик, который создал бы из text.txt

четвре документа
1.txt
2.txt
3.txt
4.txt

По 250 строк в каждом!!

   
 
 автор: bronenos   (07.06.2007 в 13:05)   письмо автору
 
   для: pornocat   (07.06.2007 в 12:58)
 

тут была аналогичная задача из 300 строк сделать 20 по 15. поищите, недавно была.

   
 
 автор: Gust   (07.06.2007 в 13:11)   письмо автору
 
   для: bronenos   (07.06.2007 в 13:05)
 

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=38490&page=2

   
 
 автор: Temnovit   (07.06.2007 в 13:44)   письмо автору
 
   для: pornocat   (07.06.2007 в 12:58)
 

Уложился в 4 строчки :)
<?
  $filename 
'text.txt';
  
$parts array_chunkfile($filename), 250);
  foreach(
$parts as $i=>$part)
     
file_put_conents(($i+1).'.txt'implode("\n"$part));
?>

   
 
 автор: Unkind   (07.06.2007 в 13:50)   письмо автору
 
   для: Temnovit   (07.06.2007 в 13:44)
 

file_put_conents()?

implode("\n", $part) нужно заменить на implode($part)

   
 
 автор: Temnovit   (07.06.2007 в 13:58)   письмо автору
 
   для: Unkind   (07.06.2007 в 13:50)
 

file_put_contents() - опечатка

>implode("\n", $part) нужно заменить на implode($part)
почему?
http://php.net/manual/ru/function.implode.php

   
 
 автор: Unkind   (07.06.2007 в 14:01)   письмо автору
 
   для: Temnovit   (07.06.2007 в 13:58)
 

почему?
Потому что file() не удаляет переносы строк. В итоге у Вас получится набор файлов с двойными переносами.

http://php.net/manual/ru/function.implode.php
Да, знаком. Сами теперь почитайте:
Замечание: По историческим причинам, функции implode() можно передавать аргументы в любом порядке, однако для унификации с функцией explode() следует использовать документированный порядок аргументов.

   
 
 автор: Trianon   (07.06.2007 в 15:08)   письмо автору
 
   для: Temnovit   (07.06.2007 в 13:44)
 

мое решение (02.06.2007 в 12:12) было в три строки, и при этом не гробило память, и не зависело от представления переводов строк (internet/unix) .

   
 
 автор: Disable   (07.06.2007 в 15:15)   письмо автору
 
   для: pornocat   (07.06.2007 в 12:58)
 

еще вариант )

<?php
$c
=count$a=file("text.txt") );
for ( 
$i=1$i<=$c$i++ )
file_put_contentsceil$i/250 ).'.txt',$a[$i-1],FILE_APPEND);
?>

   
 
 автор: Unkind   (07.06.2007 в 15:26)   письмо автору
 
   для: Disable   (07.06.2007 в 15:15)
 

Disable, он тоже пожирает оперативную память.

   
 
 автор: Disable   (07.06.2007 в 15:35)   письмо автору
 
   для: Unkind   (07.06.2007 в 15:26)
 

Проблема в том, что файл висит в переменной? Но тогда можно читать в цикле по строчке..

   
 
 автор: Unkind   (07.06.2007 в 15:50)   письмо автору
 
   для: Disable   (07.06.2007 в 15:35)
 

Конечно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования