Парсинг mail'ов

Discussion in 'PHP' started by ANONIM123, 24 Jun 2009.

  1. ANONIM123

    ANONIM123 New Member

    Joined:
    14 Jan 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Есть список txt, а в нём куча мылов, в перемешку с текстом

    Нужно выпарсить все майлы, и создать список майлов, чтобы не повторялись... Навеярняка уже есть готовые скрипты.. Выложите плиз :)
     
  2. TheSoul

    TheSoul Elder - Старейшина

    Joined:
    12 Nov 2007
    Messages:
    83
    Likes Received:
    35
    Reputations:
    0
    В файл 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;
     
    #2 TheSoul, 25 Jun 2009
    Last edited: 25 Jun 2009
  3. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    PHP:
    $f = @implode('',@file('INPUT.TXT'));
    if (
    preg_match_all('/(\w+@\w+\.\w{2,3})/'),$f,$m) {
       
    $m array_unique($m); 
       
    var_dump($m);
    }
     
  4. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    TheSoul, твой вариант не подойдет хотя бы потому что в адресах с зоной домена из 4-х букв домен будет урезан до 3-х (например вместо mail.info будет mail.inf), что не есть гуд!
    eLWAux, а у тебя если в адресе будет -(тире) или .(точка) , то они будут проигнорированы, т.е. \w проверяет только состоит ли текст только из букв, цифр и символов подчеркивания.
    поэтому предлагаю в качестве регулярки для поиска следующее:
    Code:
    (.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,4}) (.*)
    Хотя, конечно, надо видеть текст!
     
    #4 demond, 25 Jun 2009
    Last edited: 25 Jun 2009
  5. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    Допустим меня интересует для БД в формате .sql
     
  6. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    пример текста дай, чтобы не изобретать! И я тебе приведу готовое регулярное выражение!
     
  7. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    помоему ТС хочет вытянуть с дампа мыльники, тогда уже легче сделать запрос в БД:
    SELECT email_column FROM table_name