2014-10-02 6 views
-1

Я пишу отказ от подписки на рассылку электронных рассылок.Обнаружение частичного шаблона электронной почты в PHP

Я должен обнаружить электронные письма следующего формата:

<0 or more alphanumeric letter/digit only>, then one <@> character, then <1 or more alphanumeric letter/digit>, then a <.> character, then <at least 2 alphanumeric letter/digits> 

мне нужно «ноль» или более алфавитно-цифровой символ перед символом @, а не «один» или больше, потому что иногда я хочу, чтобы отказаться от подписки целые доменные имена, так в этом случае шаблон соответствует @example.com, и я также хочу обнаружить полное электронное письмо, оно начинается с буквенно-цифрового символа.

Пожалуйста, помогите мне написать код для обнаружения.

Я беру письмо от URL, как $_GET['email']

, например, URL будет;

http://www.example.com/php/[email protected] 
http://www.example.com/php/[email protected] 
http://www.example.com/php/[email protected] 
+0

использовать функцию фильтра php filter_var ($ _ GET ['email'], FILTER_VALIDATE_EMAIL) – faster2b

+1

Зачем вам это вообще нужно? Если вы хотите отменить подписку на адрес электронной почты, это либо в системе, либо нет. –

ответ

0

хорошо Regex то просто читает

/@.+\.[^\.]{2,}$/ 

EDIT: Я использовал .* и [^\.] несмотря на то, что ОП попросил «буквенно-цифровой буквы/цифры» - однако, действительный E-Mail адреса включают такие вещи, как тире, подчеркиванием и т. д. Полностью соответствие всем действительным адресам электронной почты невероятно сложно! (см.: http://www.regular-expressions.info/email.html)

+0

Я использовал ваше регулярное выражение в этом коде, но он не работает: "; echo $ matches [0]; } ?> –

+0

Что именно вы подразумеваете под «не работает»? Обратите внимание, что мое регулярное выражение не будет соответствовать всему адресу электронной почты, он будет проверять, является ли он vald (добавьте '. *' Перед '@', чтобы соответствовать всему адресу) – mhutter

+1

whops там также была опечатка; починил это! – mhutter

0

Вы можете использовать приведенное ниже регулярное выражение.

[A-Za-z0-9]*@[A-Za-z0-9]+\.[A-Za-z0-9]{2,} 

DEMO

[A-Za-z0-9]{2,} соответствует двум или более алфавитно-цифровых символов. Вы можете указать диапазон символов внутри {} paranthesis.

Смежные вопросы