PDA

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


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



<?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
Велемир Как раз то что ожидается, а не то, что думаете вы "{$logins[$i]};{$passwords[$i]}" а лучше не ебать мозг и: trim($logins[$i]).';'.trim($passwords)."\r\n"[$i]

BlackSun
17.09.2009, 18:14
<?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
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

$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

$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
$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

$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($b, 0);
}

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