Подтвердить что ты не робот

получить имя пользователя с адреса электронной почты в php

В PHP у меня есть строка вроде этого:

$string = "[email protected]";

Как я могу получить "пользователь" только с адреса электронной почты? Есть ли простой способ получить значение до @?

4b9b3361

Ответ 1

Предполагая, что адрес электронной почты действителен, этот текстовый подход должен работать:

$prefix = substr($email, 0, strrpos($email, '@'));

Это занимает все (но не включая) последнее появление @. Он использует последнее вхождение, потому что этот адрес электронной почты действителен:

"foo\@bar"@iana.org

Если вы еще не подтвердили строку, я бы посоветовал использовать функцию фильтра:

if (($email = filter_var($email, FILTER_VALIDATE_EMAIL)) !== false) {
    // okay, should be valid now
}

Ответ 2

Попробуйте следующее:

$string = "[email protected]";

$explode = explode("@",$string);

array_pop($explode);

$newstring = join('@', $explode);

echo $newstring;

Изменено для нескольких символов "@".

Ответ 4

Вы можете использовать

$user = implode('@', explode('@', $email, -1));

или

$user = substr($email, 0, strrpos($mail, '@'));

Ответ 5

В простейшей форме (при условии, что один "@") вы можете следовать за ответом @Ben Fortune (используя метод explode()).

В противном случае попробуйте следующее:

$email1 = "[email protected]";
$email2 = "b\@[email protected]";

preg_match_all ("/^(.+)@[^@]+$/", $email1, $e1);
preg_match_all ("/^(.+)@[^@]+$/", $email2, $e2);

echo "Emails: {$e1[1][0]} and {$e2[1][0]}\n";
// Result: Emails: foo and b\@r