PHP - записать в фаил содержимое двух других

Discussion in 'PHP' started by Велемир, 17 Sep 2009.

  1. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Всем привет.Такая вот проблемка.Необходимо записать содержимое двух файлов(логинов и паролей из двух файлов),объединив их символов ";" в третий фаил.Вот код,по непонятным причинам неработающий:

    PHP:

    <?php


    $logins 
    file('logins.txt');
    $passwords file('passwords.txt');

    for (
    $i=0;$i <= count($logins);$i++) {

    file_put_contents('general.txt',"$logins[$i];$passwords[$i]"FILE_APPEND);
     
    }

    ?>

    Этот код записывает содержимое оных в фаил general.txt,но получается совсем не то,что ожидалось.Проверьте сами.
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Велемир Как раз то что ожидается, а не то, что думаете вы
    PHP:
    "{$logins[$i]};{$passwords[$i]}"
    а лучше не ебать мозг и:
    PHP:
    trim($logins[$i]).';'.trim($passwords)."\r\n"[$i]
     
    _________________________
    #2 Gifts, 17 Sep 2009
    Last edited: 17 Sep 2009
  3. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    PHP:
    <?php 
        $logins 
    file('logins.txt');
        
    $passwords file('passwords.txt');
        
    $appendTo 'general.txt';
        
        
    $i 0;
        
    $file fopen($appendTo'a');

        foreach (
    $logins AS $login) {
            
    fputs($file"$login;{$passwords[$i]}\r\n");
            
    $i++;
        }

        
    fclose($file);
    ?>
     
  4. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    PHP:
    file_put_contents('general.txt'trim($logins[$i]).";".$passwords[$i], FILE_APPEND);
     
  5. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Gifts,первый вариант работает также,как и предыдущий.Второй вообще не работает,хоть я его уже и пробовал.Ща проверю остальные.
     
  6. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
  7. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    а если у тебя словарь на 40 мегов даже - конечно не будет работать. Ошибка начинающих - считать массив в цикле.

    count лучше привыкать выносить за цикл сразу. Просто не успевает. Сначала посчитал, потом цикл.
     
  8. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Без примеров не вкуривается(.У меня маленький список,ибо там даже 100 кб не наберётся.
     
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Тебе же подсказали:
    trim() - убирает пробелы и разрывы строк.
     
  10. Kusto

    Kusto Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    действительно почемуб невоспользоваться
    $a=fopen("login.txt", "r");
    while(!feof($a)){ и т д- здесь проблемм точно недолжно возникать
     
  11. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Ну,звиняйте,но у мя не заработало(.Вот рабочий пример:

    PHP:

    <?php 

    $logins 
    explode("\r\n",implode("",file('logins.txt'))); 
        
    $passwords file('passwords.txt'); 
        
    $appendTo 'general.txt'
         
        
    $i 0
        
    $file fopen($appendTo'a'); 

        foreach (
    $logins AS $login) { 
            
    fputs($file"$login;{$passwords[$i]}"); 
            
    $i++; 
        } 

        
    fclose($file);
    ?>

    В первой строке кода реально непонятно,что происходит)),хотя функции знаю:(
     
  12. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    PHP:
    <?php

         $logins 
    'logins.txt';
         
    $passwords 'passwords.txt';
         
    $out 'accounts.txt';

         
    $logins array_map('trim'file($logins));
         
    $passwords array_map('trim'file($passwords));

         
    $file fopen($out'a+');

         foreach (
    $logins as $key => $login)
         {
             
    fwrite($file$logins[$key] . ';' $passwords[$key] . "\r\n");
         }
         
         
    fclose($file);

    ?>
    Юзай :)
     
    1 person likes this.
  13. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Тю...пасип конечно.но и предыдущее работает,ток непонятно - КАК ?:(
     
  14. LolFEm

    LolFEm Elder - Старейшина

    Joined:
    8 Sep 2006
    Messages:
    160
    Likes Received:
    52
    Reputations:
    5
    file делает массив элемтов
    implode склеивает обратно в строку вставляя между ними пробел
    explode опять разбивает на массив и в качестве разделителя перенос строки
    ...
     
  15. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    LolFEm попровочка, дабы не взорвать неокрепший моск ТС

    > implode("",file('logins.txt'));

    implode склеивает обратно в строку вставляя между ними НИЧЕГО. сказано же ""

    вобщем $str=implode("",file('logins.txt')) равносильно поместить весь файл в $str :)
     
    _________________________
  16. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    ебать ту люсю :D наркоман, столько лишних маневров, а можно было бы просто юзануть трим.

    PHP:
    <?php 
    $logins 
    file('logins.txt'); 
    $passwords file('passwords.txt'); 
    for (
    $i=0;$i <= count($logins);$i++) { 
    file_put_contents('general.txt'trim($logins[$i]).';'.trim($passwords[$i]), FILE_APPEND); 

    ?>
     
  17. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Пасип за объяснение,комрады.То бишь если у нас пять строк

    Вася
    Петя
    Маня
    Люся
    Аня
    то у нас получится ВасяПетяМаняЛюсяАня,и,если между ними есть пробельный символ,то эксплоуд напугает бедные строчки(.Правильно мыслю?:).
     
  18. gisTy

    gisTy Elder - Старейшина

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    прости, но тебя в школе читать не учили?
    и так:
    1. заходим на какой-нибудь php.su
    2. видим там вверху поиск по сайту
    3. вбиваем в него название нужной тебе функции
    4. из списка найденый тем на яндексе выбираем ту, что подходит
    5. блять _читаем_ о том, как работает функция
    там даже примеры кода приведены и последствия их выполнения!
    просто такие вопросы, ну просто слов нет!

    да и вообще если читать в школе не учили, то взял бы, открыл редактор, накидал простенький скрипт показывающий, что делает та или иная функция, да поэкспериментировал с ним
     
    1 person likes this.
  19. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Работает с большими файлами, но если файл с паролями будет очень большой, то будет немного медленно.
    PHP:
    <?php

    $a 
    fopen('a.txt''rt');    //файл с логинами
    $b fopen('b.txt''rt');    //файл с паролями
    $c fopen('c.txt''wt');    //файл результата

    $separator ';';            //разделитель


    $temp '';


    while(!
    feof($a))
    {
        
    $temp trim(fgets($a));
        
    //для каждого логина перебираем пароли
        
    while(!feof($b))
            
    fwrite($c$temp.$separator.trim(fgets($b))."\n");
        
    fseek($b0);
    }

    fclose($a);
    fclose($b);
    fclose($c);
    ?>