O @
karakteri ulaşıncaya kadar herhangi bir karakter maç ve çekeceği normal ifade:
([^@]+)
Yani ne gerek gibi görünüyor. Bu e-posta adreslerine garip varyasyonları her türlü hallederim.
Ben bunu benimkinden daha iyi hissediyorum çünkü neden Ben James, onun cevabını silinmez emin değilim. Ben (onun cevabını undeletes sürece) burada göndermek için gidiyorum:
Neden string fonksiyonları yerine regex kullanabilir?
$parts = explode("@", "johndoe@domain.com");
$username = $parts[0];
Siz tüm bu durumda normal ifadeleri gerekmez. Ben kullanarak explode
şahsen, çok daha iyi bir seçenek olduğunu düşünüyorum.
Johannes Rössel yorumların işaret ettiği gibi, e-posta adresi ayrıştırma oldukça karmaşıktır. Eğer herhangi bir teknik-geçerli bir e-posta adresini ele almak mümkün olacak% 100 emin olmak istiyorsanız, benim cevap listelenen hem de çözümleri şok olacaktır, çünkü, düzgün bir alıntı idare edecek bir rutin yazmak zorunda gidiyoruz gibi adresleri "a@b"@example.com
. Orada sizin için ayrıştırma bu tür işler bir kütüphane olabilir, ama ben bunun farkında değilim olabilir.