Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   PHP - записать в фаил содержимое двух других (https://forum.antichat.xyz/showthread.php?t=141990)

Велемир 17.09.2009 17:50

PHP - записать в фаил содержимое двух других
 
Всем привет.Такая вот проблемка.Необходимо записать содержимое двух файлов(логинов и паролей из двух файлов),объединив их символов ";" в третий фаил.Вот код,по непонятным причинам неработающий:

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,но получается совсем не то,что ожидалось.Проверьте сами.

Gifts 17.09.2009 18:06

Велемир Как раз то что ожидается, а не то, что думаете вы
PHP код:

"{$logins[$i]};{$passwords[$i]}

а лучше не ебать мозг и:
PHP код:

trim($logins[$i]).';'.trim($passwords)."\r\n"[$i


BlackSun 17.09.2009 18:14

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);
?>


Fepsis 17.09.2009 18:16

PHP код:

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


Велемир 17.09.2009 18:24

Gifts,первый вариант работает также,как и предыдущий.Второй вообще не работает,хоть я его уже и пробовал.Ща проверю остальные.

Велемир 17.09.2009 18:26

У мя такой результат:

мыло1@mail.ru
;0075

мыло2@mail.ru
;12454568

Pashkela 17.09.2009 18:28

а если у тебя словарь на 40 мегов даже - конечно не будет работать. Ошибка начинающих - считать массив в цикле.

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

Велемир 17.09.2009 18:29

Без примеров не вкуривается(.У меня маленький список,ибо там даже 100 кб не наберётся.

b3 17.09.2009 18:30

Цитата:

У мя такой результат:

мыло1@mail.ru
;0075
Тебе же подсказали:
Цитата:

file_put_contents('general.txt', trim($logins[$i]).";".$passwords[$i], FILE_APPEND);
trim() - убирает пробелы и разрывы строк.

Kusto 17.09.2009 18:31

действительно почемуб невоспользоваться
$a=fopen("login.txt", "r");
while(!feof($a)){ и т д- здесь проблемм точно недолжно возникать

Велемир 17.09.2009 18:32

Ну,звиняйте,но у мя не заработало(.Вот рабочий пример:

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);
?>

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

mailbrush 17.09.2009 18:34

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);

?>

Юзай :)

Велемир 17.09.2009 18:36

Тю...пасип конечно.но и предыдущее работает,ток непонятно - КАК ?:(

LolFEm 17.09.2009 19:10

file делает массив элемтов
implode склеивает обратно в строку вставляя между ними пробел
explode опять разбивает на массив и в качестве разделителя перенос строки
...

Gar|k 17.09.2009 19:28

LolFEm попровочка, дабы не взорвать неокрепший моск ТС

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

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

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

b3 17.09.2009 21:06

Цитата:

$logins = explode("\r\n",implode("",file('logins.txt')));
ебать ту люсю :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); 

?>


Велемир 19.09.2009 02:41

Пасип за объяснение,комрады.То бишь если у нас пять строк

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

gisTy 19.09.2009 03:53

Цитата:

Сообщение от Велемир
Пасип за объяснение,комрады.То бишь если у нас пять строк

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

прости, но тебя в школе читать не учили?
и так:
1. заходим на какой-нибудь php.su
2. видим там вверху поиск по сайту
3. вбиваем в него название нужной тебе функции
4. из списка найденый тем на яндексе выбираем ту, что подходит
5. блять _читаем_ о том, как работает функция
там даже примеры кода приведены и последствия их выполнения!
просто такие вопросы, ну просто слов нет!

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

Chaak 19.09.2009 14:31

Работает с большими файлами, но если файл с паролями будет очень большой, то будет немного медленно.
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);
?>



Время: 13:41