Bir e-posta adresi için bir dize arama PHP

3 Cevap php

Ve sonra geri - Merhaba Im bir e-posta adresi içerip içermediğini görmek için bir dize arama yapmaya çalışırken.

Tipik bir e-posta vaildator ifadesidir:

eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);

Ancak bu bir dize ise nasıl aramak istiyorsunuz, örneğin dize e-posta adresini döndürür:

"Merhaba benim adım joe@mysite.com de temasa geçilebilir, Joe. Twitter'da da duyuyorum."

Ben bunun etrafında b \ ile tüm varsa ben arayabilirsiniz biliyorum ama nasıl buldum ne iade edebilirim, biraz şaşkına duyuyorum.

Teşekkürler.

3 Cevap

$ yazmaçlar son argüman olarak eklemek:

eregi("...", $email, $regs);

Bir ADDR_SPEC ayıklanması için daha iyi bir PCRE olduğunu:

 /[a-z0-9\._%+!$&*=^|~#%'`?{}/\-]+@([a-z0-9\-]+\.){1,}([a-z]{2,6})/

Eğer gerçekten bir RFC 2822 çıkarmak istiyorsanız Ama o zaman gibi bir şey gerekir:

 /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/

C.