получить имя пользователя с адреса электронной почты в php В PHP у меня есть строка вроде этого: $string = "[email protected]"; Как я могу получить "пользователь" только с адреса электронной почты? Есть ли простой способ получить значение до @? Ответ 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; Изменено для нескольких символов "@". Ответ 3 Theres хороший пример в ручном вводе PHP для функции strpos(): http://php.net/manual/en/function.strstr.php#example-4852 Ответ 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
Ответ 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; Изменено для нескольких символов "@".
Ответ 3 Theres хороший пример в ручном вводе PHP для функции strpos(): http://php.net/manual/en/function.strstr.php#example-4852
Ответ 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