Это намного проще (после проверки, что электронная почта действительна):
$email = 'my.name@domain.com';
$split = explode('@',$email);
$name = $split[0];
echo "$name"; // would echo "my.name"
Чтобы проверить действительность, вы можете сделать это:
function isEmail($email) {
return (preg_match('/[\w\.\-]+@[\w\.\-]+\.\[w\.]/', $email));
}
if (isEmail($email)) { ... }
Что касается извлечения письма из First Last <first.last@domain.com>
,
function returnEmail($contact) {
preg_match('\b[\w\.\-]+@[\w\.\-]+\.\[w\.]\b', $contact, $matches);
return $matches[0];
}