Что нового

Как получить домен почты

lampz

Новичок
Сообщения
3
Репутация
0
Всем привет!
У меня есть в блокноте почтовый ящик: [email protected]

как получить его домен?
$domen = bbb.ru
(учитывается то - что ящика мы не знаем) - нам известно только что строка записана в виде e-mail ([email protected])

P.S. Просьба не кидать в меня помидорами )) Спасибо.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <Array.au3>

$sFile = @ScriptDir & '\emails.txt'
$sEmails = FileRead($sFile)

$aEmails = StringRegExp($sEmails, '(?ms)^([^@\r\n]+@[^\.]+\.[^\.\r\n]+)', 3)
$aDomains = StringRegExp($sEmails, '(?ms)^[^@\r\n]+@([^\.]+\.[^\.\r\n]+)', 3)

_ArrayDisplay($aEmails, 'Emails')
_ArrayDisplay($aDomains, 'Domains')
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Или более надёжный вариант с полной (на 99%) проверкой на спецификацию email-адреса:

Код:
#include <Array.au3>

$sFile = @ScriptDir & '\emails.txt'
$sEmails = FileRead($sFile)

$aEmails = StringRegExp($sEmails, '(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])', 3)
$aDomains = StringRegExp($sEmails, '(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@((?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))', 3)

_ArrayDisplay($aEmails, 'Emails')
_ArrayDisplay($aDomains, 'Domains')
 
Автор
L

lampz

Новичок
Сообщения
3
Репутация
0
Или более надёжный вариант с полной (на 99%) проверкой на спецификацию email-адреса:

Код:
#include <Array.au3>

$sFile = @ScriptDir & '\emails.txt'
$sEmails = FileRead($sFile)

$aEmails = StringRegExp($sEmails, '(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])', 3)
$aDomains = StringRegExp($sEmails, '(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@((?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))', 3)

_ArrayDisplay($aEmails, 'Emails')
_ArrayDisplay($aDomains, 'Domains')
Cпасибо! работает.
Только я хотел получить домен в дальнейшее использование.
$aDomains использую - а он оказывается пустой. Проверил в
Код:
MsgBox(32, '', $aDomains)
- а там пусто.
Как же мне получить в переменную мой результат в виде xxxxx.ru.
P.S - я документ исследую построчно. У меня в строке бывает только один e-mail. Я смотрю одну строку - беру там домен и использую его.
Тоесть весь список мне сразу не нужен.
 
Верх