обьединение нескольких строк в одну, неправильно работает implode

Discussion in 'PHP' started by duds, 12 Nov 2014.

  1. duds

    duds New Member

    Joined:
    3 Aug 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    я написал скрипт, который по задумке, берет поочередно файлы txt из директории своей, в каждом файле 1 строка = 1 предложение.

    Нужно по задумке, чтобы скрипт поочередно открывал каждый txt файл в своей директории , рандомно брал из него 15-30 неповторяющихся строк(каждая строка это предложение с точкой на конце), вносил их в массив , потом обьединял эти предложения из массива в одну строку (через implode) , то есть делал единым текстом их друг за другом и перезаписывал открытый файл. И так пока не кончатся файлы в директории.

    пример:

    до работы скрипта в файле было:

    предложение 1.
    предложение 2.
    предложение 3.

    после работы нужно чтобы стало:

    предложение1. предложение2. предложение 3. и т.д.

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

    Как сделать, чтобы предложения шли единым текстом?

    сам код скрипта ниже



    PHP:
    <?php
    // получаем список txt файлов в директории
    $filelist glob("*.txt"); 
    foreach(
    $filelist as $filetxt)
    {
    //разбиваем каждый файл на массив из строк, каждая строка элемент массива
    $f file($filetxt);
    //определяем число элементов в массиве(число строк в файле)
    $size sizeof($f);
    //чтобы не было повторяющихся строк вводим массив used_numbs
    $used_numb = array();
    //массив с отобранными рандомно строками
    $randomkeys = array();
    for(
    $i=0$i<rand(15,30); $i++)
    {
    //проверка на повтор
    $number rand(0$size);
    while(
    array_search($number$used_numb)!== false$number=rand(0,$size);
    $used_numb[] = $number;
    $randomkeys[] = $f[$number];
    }

    //обьединяем все предложения  в 1 строку и перезаписываем файл
    $str=implode$randomkeys);
    $open=fopen($filetxt"w+");
    fwrite($open, (string)$str);
    fclose($open);

    }

    ?>
     
    #1 duds, 12 Nov 2014
    Last edited: 12 Nov 2014
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Обрабатывать предварительно предложения из файла с помощью, например, http://php.net/manual/en/function.rtrim.php
     
    _________________________
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    PHP:
    $str=implode$randomkeys); 
    замени на

    PHP:
    $str=implode"\r\n"$randomkeys); 
     
  4. duds

    duds New Member

    Joined:
    3 Aug 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0

    большое спасибо, вроде бы заработало.
     
    #4 duds, 12 Nov 2014
    Last edited: 12 Nov 2014
Loading...
Similar Threads - обьединение нескольких строк
  1. GAiN
    Replies:
    3
    Views:
    7,547