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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   нужен простенький скрипт) (https://forum.antichat.xyz/showthread.php?t=64918)

noisia 20.03.2008 22:12

нужен простенький скрипт)
 
умя есь список фтп в таком виде
ftp.user.com l:12345 p:1234
надо что-бы меняло на
log:pass@ftp.user.com

demonoid 20.03.2008 22:41

ftp.txt
Код:

ftp.user.com l:qwer p:11111
ftp.user.com l:qw123 p:1234
ftp.user.com l:qw123 p:4321
ftp.user.com l:q123 p:2314

Код:

perl -ne "/(.+) l:(.+) p:(.+)/&&print \"$2\:$3\@$1\n"" ftp.txt > n_ftp.txt
n_ftp.txt
Код:

qwer:11111@ftp.user.com
qw123:1234@ftp.user.com
qw123:4321@ftp.user.com
q123:2314@ftp.user.com


WVBR 20.03.2008 22:43

PHP код:

<?php
function rewrites($fn,$str)
{
if(
file_exists($fn)): 
$f=fopen($fn,w);
for(
$i=0;$i<=sizeof($str)-1;$i++):
echo 
'-> '.$str[$i].'<br>';
fwrite($f,$str[$i]."\n");
endfor;
fclose($f);
else: die(
'not found: <b>'.$fn); endif;
}
$list=file('list.dat');
for(
$i=0;$i<sizeof($list);$i++)
 
$massresult[]= str_replace(chr(13), "",chop(preg_replace('~([^\s]+) l:([^\s]+) p:([^\n]+)~''\\2:\\3@\\1'$list[$i])));
rewrites('newlist.dat',$massresult);
?>


WVBR 20.03.2008 22:54

newlist.dat chmod-> соответствующий для записи
и строчка
$result=$login[1].':'.$pas[1].'@'.$tmp[0];
не нужна ... зашпарился)

noisia 20.03.2008 23:01

Спасибо, только оно один файл из листа делает, а надо что-бы весь файл.

WVBR 20.03.2008 23:22

кхм... чёт я не вразумил.. сори
как понять - "делает один файл"
а надо - "что-бы весь"

noisia 20.03.2008 23:40

тоесть одну строчку из файла.

NOmeR1 20.03.2008 23:58

WVBR, ты как-то всё усложнил
$string - содержимое файла.
Код:

preg_replace('~([^\s]+) l:([^\s]+) p:([^\n]+)~', '\\2:\\3@\\1', $string)
Думаю, получить контент файла и записать в новый ты сможешь.

WVBR 21.03.2008 00:04

NOmeR1, регулярки ещё плохо рулю ... =)
noisia, исправленно

Flame of Soul 21.03.2008 00:43

файлы list.dat создавать будет new.dat если есть права или сам создай, вопрос конкретно не поняла, но вроде то что нужно))
PHP код:

<?php
$db    
"list.dat";
$ndb    fopen("new.dat","r+");
$fn file($db);
echo 
"<table border=1>";
for (
$i=0$i<count($fn);$i++)
{
list (
$aa,$bb,$cc) = explode (":",$fn[$i]);
    
$cc str_replace("\n"," ",$cc);
    
$cc str_replace("\r"," ",$cc);
list (
$dd,$ff,$ee) = explode (".",$aa);
list (
$gg) = explode (" ",$ee);
list (
$hh) = explode (" ",$bb);
list (
$cc) = explode (" ",$cc);
if(!
$ndb){echo "Error file 'new.dat'";}
else
{
fputs ($ndb,$hh.':'.$cc.'@'.$dd.'.'.$ff.'.'.$gg."\n");
echo 
"<tr><td>".$hh."</td><td>".$cc."</td><td>@</td><td>".$dd.'.'.$ff.'.'.$gg."</td></tr>";
}
}
fclose($ndb);
echo 
"</table>";
?>


demonoid 21.03.2008 00:58

Код:

perl -pne "s;(.+) l:(.+) p:(.+);$2:$3\@$1;" ftp.txt > n_ftp.txt
кто меньше ? :D

NNNS 21.03.2008 10:24

Вот мой вариант
PHP код:

<?php
set_time_limit
(0);
$in "in.txt";  # Входной файл
$out "out.txt";# Выходной файл

function transFtp($in,$out) {
    
$ftp file($in); # Помещаем содержимое файла в массив
    
$fd  fopen($out"w");  # открываем файл для записи
    
for($i=0;$i<count($ftp);$i++) { # Запускаем цикл
        
if($ftp[$i] != "") {
            list(
$url,$login,$pass) = explode(" "$ftp[$i]); # разбиваем элемент массива
            
$login str_replace("l:","",$login);
            
$pass  str_replace("p:","",$pass);
            
$pass  str_replace("\r\n","",$pass);
            
$newFtp$login.":".$pass."@".$url."\r\n"# Составляем шаблон
            
fwrite($fd$newFtp); # записываем очередной аккаунт в файл
        
}
    }
    
fclose($fd); # закрываем файл
}

transFtp($in,$out); # вызываем функцию

?>


NOmeR1 21.03.2008 11:12

Ну тогда и мой. Там цикл не обязательно делать, а регулярки - это чудо)
PHP код:

<?php
    
// {
        
$in  'file.txt';
        
$out 'new_file.txt';
    
// }
    
$content file_get_contents($in);
    
$content preg_replace('~([^\s]+) l:([^\s]+) p:([^\n]+)~''\\2:\\3@\\1'$content);
    
$file fopen($out'w');
    
fwrite($file$content);
    
fclose($file);
?>


WVBR 21.03.2008 19:46

NOmeR1, супер. только забыл удалитЬ непотребные аски символы (пробел возврат перевод каретки)


Время: 22:31