Есть список txt, а в нём куча мылов, в перемешку с текстом Нужно выпарсить все майлы, и создать список майлов, чтобы не повторялись... Навеярняка уже есть готовые скрипты.. Выложите плиз
В файл text.txt кидаешь всё что надо отпарсить В конце получишь мыла в файле pars_emails.txt #!/usr/bin/perl -w open (FILE , "<text.txt"); chomp (@text = <FILE>); close FILE; undef %saw; while (@text) { $pars = shift @text; $pars =~ /\b(.*?)\@(.*?)\.(.{2,4})/g; $email = "$1\@$2\.$3"; push @in,$email; } @in = grep(!$saw{$_}++, @in); open (FILE2 , ">>pars_emails.txt"); while (@in) { $end = shift @in; print FILE2 "$end\n"; } close FILE2;
PHP: $f = @implode('',@file('INPUT.TXT')); if (preg_match_all('/(\w+@\w+\.\w{2,3})/'),$f,$m) { $m = array_unique($m); var_dump($m); }
TheSoul, твой вариант не подойдет хотя бы потому что в адресах с зоной домена из 4-х букв домен будет урезан до 3-х (например вместо mail.info будет mail.inf), что не есть гуд! eLWAux, а у тебя если в адресе будет -(тире) или .(точка) , то они будут проигнорированы, т.е. \w проверяет только состоит ли текст только из букв, цифр и символов подчеркивания. поэтому предлагаю в качестве регулярки для поиска следующее: Code: (.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,4}) (.*) Хотя, конечно, надо видеть текст!
помоему ТС хочет вытянуть с дампа мыльники, тогда уже легче сделать запрос в БД: SELECT email_column FROM table_name