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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Рандомно объединить текстовые файлы

Сообщения:  [1-3] 

 
 автор: julpierto   (31.07.2011 в 12:06)   письмо автору
 
   для: DEM   (31.07.2011 в 11:04)
 

DEM, спасибо. Идея добавить в массив файлы уже хорошо, но с рандомностью другая задача - читать все файлы нужно попорядку, а объединять по 30-50, то есть рандом в количестве, но для начала можно и без него. Сложность заключается в 2х моментах: как считывать файлы по опр. количеству (например по 30) пока они не закончатся в папке, и как называть новые файлы (1.txt , 2.txt...) чтобы дозаписывать не в один файл, а каждый раз начинать новый?

Сделал такую проверку:
<?php

$handle 
opendir("./text");
while (
false !== ($file readdir($handle))) 
{
      if (
$file != "." && $file != ".."
         { 
          
$filelist[] = $file;
          
$count count($filelist);    
         }
}    
                          
$x=0;

for(
$i=0;$i<$count;$i++)
   {
    
$str file_get_contents("./text/".$filelist[$i]);
    
$rand rand(1,3);
    
$devide $i%$rand;                                     //  после каждого 1-3го (рэндом) файла

      
if ($devide == 0)   { $x++; }                        //  меняется имя файла для записи (1.txt; 2.txt... ) 
  
    
$newfile fopen("./newfiles/".$x.".txt","a+");
    
fwrite($newfile,$str);
    
fclose($newfile); 
  }  
echo 
"$i files detected </br>";            
echo 
"$x newtext files created";

?>


Создал в папке ./text - 7 файлов (1.txt, 2text.txt, 3.txt .... 7.txt) с тескстом 1,2,3...7 соответственно.
Скрипт создает 3 новых файла со значеними:

1.txt - 437
2.txt - 621
3.txt - 5

Помогите исправить / отрефакторить пожалста?

  Ответить  
 
 автор: DEM   (31.07.2011 в 11:04)   письмо автору
 
   для: julpierto   (30.07.2011 в 23:56)
 

Через цикл FOR. Это будет выглядеть примерно так:

<?php
//Тут вы обходите файлы и добавляете в массив своё количество. 
$arr//Наш массив с названием файлов

shufle($arr); //перемешиваем наш массив, что бы файлы там распологались рандомно
$files '';
for(
$i=0;$i<$count;$i++){
  
$fp fopen($arr[$i], "r");
  
$files .= fread($fp);
  
fclose($fp);
}
$fp fopen("newFile.txt""w+");
fwrite($fp$files);
fclose($fp);


?>



Как-то так...

  Ответить  
 
 автор: julpierto   (30.07.2011 в 23:56)   письмо автору
 
 

Возникла такая задача:
Есть куча текстовых файлов (например, 10 000), все в одной папке. Имена файлов случайные цифры.
Надо объединить рандомно от 30 до 50 имеющихся файлов в один, и так все текстовики, которые есть. Новые обозвать 1.txt, 2.txt и т.д.
Написал такой скрипт:
<?php

while (!false == ($file readdir($handle))) {

if (
$file != "." && $file != "..") { 

$count rand(30,50);

$i 30;

while (
i++<$count) {

$handle opendir("./text");

$str file_get_contents("./text/".$file); 

$x 0;

$x++;

$newfile fopen("$x"."txt","a+");

fwrite($newfile,$str);

fclose($newfile);
        
            }

      }



?>

И сам запутался, подскажите пожалуйста как реализовать считывание файлов таким образом?

  Ответить  

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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