За последние 24 часа нас посетил 17901 программист и 1286 роботов. Сейчас ищут 1390 программистов ...

Вытаскивание e-mail регуляркой

Тема в разделе "Регулярные выражения", создана пользователем Alekzander, 20 авг 2007.

  1. Alekzander

    Alekzander Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Адрес:
    Из поднебесной
    Народ сильно не пинайте если такая тема уже есть (я не нашёл)!
    В регулярках я ноль. Надо вытащить все e-mail адреса из строки, а хотяб приблительно как для этого написать регулярку я не знаю... Кто с таким сталкивался или знает как сделать помогите пожалуйста!
     
  2. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    пример из книжки - ^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1. <?
    2.  
    3. $buf = "
    4.  
    5. адресок [email=440hz@mail.ru]440hz@mail.ru[/email]
    6. и еще адын <440hz@php.ru> и еще [email=andrey.lugovou@440hz.ru]andrey.lugovou@440hz.ru[/email]
    7.  
    8. [email=andrey_lugovoy@440hz.ru]andrey_lugovoy@440hz.ru[/email]
    9.  
    10. ";
    11.  
    12. $pattern = '/[-0-9a-z\._]+@[0-9a-z\._]+\.[a-z]{2,4}/i';
    13.  
    14. if(preg_match_all($pattern,$buf,$mails)) {
    15.  
    16.     print_r($mails);
    17.  
    18.  
    19. }
    20.  
    21. ?>
    Код (Text):
    1. www(root):/home/440hz/tests#>php getmail.php
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => 440hz@mail.ru
    7.             [1] => 440hz@php.ru
    8.             [2] => andrey.lugovou@440hz.ru
    9.             [3] => andrey_lugovoy@440hz.ru
    10.         )
    11.  
    12. )
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. #([^\s]+@[^\s]+\.[a-z]+)#si
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    440Hz всё же {2,6} ;)
     
  6. Alekzander

    Alekzander Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Адрес:
    Из поднебесной
  7. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    а что с ними не так?
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    дада, но это ужо детали?
     
  9. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    440Hz та просто исправил с 2,3 на 2,4, дык надо было сразу на 2,6 =p
     
  10. Alekzander

    Alekzander Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Адрес:
    Из поднебесной
    Я думаю, что он не подходит под регулярку...
     
  11. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Alekzander почему ты так думаешь? Лучше проверь.
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1. <?
    2.  
    3. $buf = "
    4.  
    5. адресок [email=440hz@mail.ru]440hz@mail.ru[/email]
    6. и еще адын <440hz@php.ru> и еще [email=andrey.lugovou@440hz.ru]andrey.lugovou@440hz.ru[/email]
    7.  
    8. [email=andrey_lugovoy@440hz.ru]andrey_lugovoy@440hz.ru[/email]
    9.  
    10. [email=admin@734.com1.ru]admin@734.com1.ru[/email]
    11.  
    12. ";
    13.  
    14. ...
    15.  
    16.  
    17. ?>
    18.  
    Код (Text):
    1. www(root):/home/440hz/tests#>php getmail.php
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => 440hz@mail.ru
    7.             [1] => 440hz@php.ru
    8.             [2] => andrey.lugovou@440hz.ru
    9.             [3] => andrey_lugovoy@440hz.ru
    10.             [4] => admin@734.com1.ru
    11.         )
    12.  
    13. )
     
  13. Alekzander

    Alekzander Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    104
    Симпатии:
    0
    Адрес:
    Из поднебесной
    Проверил. все работает. Всем огромное человеческое СПАСИБО!
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    лучше деньгами...
     
  15. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    интересно, а что будем делать с адресами типа
    Код (Text):
    1. ...@...oops
    для первого варианта или
    Код (Text):
    1. @@@.myemail
    для второго ? а, может, действительно, детали... по-моему единственный способ увериться, что перед вами -- валидный адрес -- это послать на него сообщение и дождаться ответа... хотя, похоже, человек этим и решил заняться. в массированном режиме, причём...