Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. array_walk($arr = preg_split('/s/', $text), function($val, $key){
  2.  
  3. //так делать нельзя, но если очень хочется, то можно
  4. global $arr;
  5.  
  6. if(!filter_var($val, FILTER_VALIDATE_EMAIL)) {
  7. unset($arr[$key]);
  8. }
  9. });
  10.  
  11. <?php
  12. $text = '
  13. some@email.com
  14. not_email@test another@junk email@again.com
  15. @var notvar@
  16.  
  17. some random text
  18. ';
  19.  
  20. $pattern = '~[^s]+@[^s]+~';
  21. $output = array();
  22.  
  23. //Захватываем все выражения, похожие на e-mail
  24. preg_match_all($pattern, trim($text), $matches);
  25.  
  26. //Отсеиваем лишнее
  27. foreach($matches[0] as $key => $val) {
  28. $email = filter_var($val, FILTER_VALIDATE_EMAIL);
  29. if($email) {
  30. $output[] = $email;
  31. }
  32. }
  33.  
  34. print_r($output);
  35.  
  36. Array
  37. (
  38. [0] => some@email.com
  39. [1] => email@again.com
  40. )
  41.  
  42. $mail = <<<EMAIL
  43. Мой тестовый текст, для того, что бы проверять и ловить по регулярному выражению email-ы
  44. Допустим тут будет мой емейл: mymail@gmail.com, а тут будет эмейл моего друга: myfriend@mail.ru.
  45. Еще, предположу, что тут будет email моей мамы: i_love_my_mam@yandex.ru и моего папы: i_love_my_father_to@rambler.ru
  46. Мыло брата и сестры: brother-mail@mail.vv.si, sister-mail@mail.vv.si
  47. EMAIL;
  48.  
  49. $mail2 = <<<EMAIL2
  50. Отловит, например, super.user@e.mail, или user2@e.mail, или user@e1.mail. И не навалит много мусора, например, часто встречающееся в конце предложения "пиши мне на klopp@yandex.ru." (с точкой в конце), не говоря о тех же точках: после собаки, сдвоенных точках, и много другого мусора.
  51. EMAIL2;
  52.  
  53. $arr = array();
  54. $ptrn = "/b([a-z0-9._-]+@[a-z0-9.-]+)b/i"; //вот мой маленький да удаленький шаблончик )
  55. preg_match_all($ptrn,$mail,$arr);
  56.  
  57. echo("<pre>");
  58. print_r($arr[0]);
  59. echo("</pre>");
  60.  
  61. Array
  62. (
  63. [0] => mymail@gmail.com
  64. [1] => myfriend@mail.ru
  65. [2] => i_love_my_mam@yandex.ru
  66. [3] => i_love_my_father_to@rambler.ru
  67. [4] => brother-mail@mail.vv.si
  68. [5] => sister-mail@mail.vv.si
  69. )
  70.  
  71. Array
  72. (
  73. [0] => super.user@e.mail
  74. [1] => user2@e.mail
  75. [2] => user@e1.mail
  76. [3] => klopp@yandex.ru
  77. )
  78.  
  79. /^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD
  80.  
  81. preg_match_all( "/[^@s]++@S++/", $text, $result );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement