Доброго времени суток . если у кого есть минутка , напишите плиз парсер который будет парсить текстовый файл вида : Code: [email protected] [email protected] [email protected] И удалять все поля кроме рамблера . Спасибо.
open(FILE, '<incom.txt'); while(<FILE>) { print $_ if $_ =~ /rambler/; } юзать C:\>pars.pl > выходной файл
PHP: <?php @set_time_limit(0); $ft = fopen ("list.txt", "r"); while (!feof($ft)) { $str = trim(fgets($ft, 100)); if (strpos($str,'@rambler.ru')>0) { $fd = fopen ("rambler.txt", "a+"); fwrite ($fd, $str); fwrite ($fd, "\n"); fclose ($fd); } } fclose ($ft); ?>
PHP: $fd = fopen ("rambler.txt", "a+"); fwrite ($fd, $str); fwrite ($fd, "\n"); fclose ($fd); Не думаю, что есть гуд открывать и закрывать файл внутри цикла. Имхо перл в самый раз, а пшп тут, так скажем, отсасывает
*лучше использовать строковое равно Code: #!perl use strict; use warnings; my $file = shift||exit print "usage : $0 <file>"; open( my $F, '<',$file)|| exit print $!; while( <$F> ) { $_=~/\@(\w+)/; print $_ if $1 [COLOR=DarkOrange][B]eq[/B][/COLOR] 'rambler'; }
Хм...не обязательно ....это не тупое сравнение, это сравнение по шаблону ( =~ ) В твоем варианте лишний гемор с регекспом )))) И еще хорошо было бы модификаторы io поставить в шаблоне ) ЗЫЖ А то сталкивался с любителями писать мыла а-ля (@Rambler.Ru @RAMBLER.RU итд) )))) ЗЗЫЖ В примере C!klodoL будет еще ловить мыла а-ля *rambler*@somehost.com.... лучше будет в шаблоне юзать что-нибудь типа \@rambler.ru Ну это так, если уже по коду пошли )
Смотрим примеры которые дал ТС Теперь в парсер который написал C!klodoL положим мыло [email protected] biophreak прикольно отредактировал не успел я ответ написать . Еще раз повторяю ориентируемся на примеры ТС
Добавляем ровно 4 символа в пример C!klodoL =)) : open(FILE, '<incom.txt'); while(<FILE>) { print $_ if $_ =~ /\@rambler/io; } Вуаля ))) Ну примеры, он видимо тут и придумывал, а ктож знает какая там у него база мыл.... ))))
но тогда может попасть мыло типа @rambler.com 8) если уж совсем точно то; open(FILE, '<incom.txt'); while(<FILE>) { print $_ if $_ =~ /\@rambler\.ru/i; }
А теперь делаем оптимизацию и убираем 9 лишних символов ))) open(FILE, '<incom.txt'); while(<FILE>) { print if /\@rambler\.ru/i; }
Ну и если совсем упростить и минимизировать )))) open(F, 'incom.txt'); while(<F>){ print if /\@rambler.ru/i }
Я специально не стал стал изменять имена дескриптора и файлов, перевод строк и тд, но раз уж на то пошло: open(F,'i');while(<F>){print if /\@rambler.ru/i}
Добавлю отдельный твик )) while(<>){ print if /\@rambler.ru/i } Юзать как file.pl file_with_mails.txt Жду ответа ))) ))))
PHP: <?php $f=file("мыльники.txt"); for($i=0;$i<count($f);$i++) strpos($f[$i],"rambler") ? echo $f[$i] : continue; ?>
Code: $ cat incom.txt [email protected] [email protected] [email protected] [email protected] $ grep -i @rambler.ru incom.txt [email protected] [email protected]
Вариант 1 Могу только пробелы убрать ) while(<>){print if /\@rambler.ru/i} И запускать как f.pl i )) Вариант 2 аka жесткий твик =) while(<>){print if /\@r(.+)r.ru/i} Выгода - 1 символ )) Лично я не знаю подобного почтовика кроме рамблера nerezus, да мы просто балуемся (или если хочешь - меряемся письками
PHP: <?php error_reporting(E_ALL); set_time_limit(0); $fr=fopen("mail.txt","r"); $fw=fopen("rambler.txt","w"); while (!feof ($fr)) { $buffer = fgets($fr,255); $buffer = strtolower($buffer); $log=explode('@',$buffer,2); $log[1]=trim($log[1]); if ($log[1]=='rambler.ru') fputs($fw,$buffer); } echo "OK!"; fclose($fr); fclose($fw); ?> как мне написали explode() не рулит, лучше strpos... это так, просто скрипт брал из этого: http://forum.antichat.ru/thread54946.html strpos рулит не всегда кстати