PHP разделяет значения, разделенные запятыми, а затем адреса электронной почты

У меня есть строка в базе данных адресов электронной почты, которую мне нужно разделить:

[email protected], [email protected]

Я разделяю адреса запятыми, а затем пытаюсь взорвать каждый адрес электронной почты, чтобы получить часть после символа @

$toAddresses = explode(',', $result["to_addresses"]);
foreach($toAddresses as $a) {
$toAddresses2 = explode('@', $a);
    foreach($toAddresses2 as $b) {
        echo $b.'<BR>';
    }
}

и это возвращает следующее:

123
test.domain.com
ff
g.com

Я хочу получить только часть после @, но не уверен, где я ошибся

$toAddresses2 = explode('@', $a)[1]; echo $toAddresses2; Вам нужно только второе значение индекса. Нет необходимости во втором foreach
Abhishek 14.06.2018 13:24

Вы также можете использовать list($user, $domain) = explode('@', $a); echo $domain;

Nigel Ren 14.06.2018 13:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
575
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

удалить foreach

написать: echo $toAddresses2[1]."<br>";

Ответ принят как подходящий

Вам следует попробовать следующее:

$toAddresses = explode(',', $result["to_addresses"]);
foreach ($toAddresses as $a) {
    echo substr($a, 0, strpos($a, "@")) . "<br>"; // For get string before @
    echo substr($a, strpos($a, "@") + 1) . "<br>"; // For get string after @
}

В приведенном выше коде strpos определяет местоположение @ в адресе электронной почты, а затем substr вырезает подстроку после этой позиции.

Узнать больше о strpos и substr

это отлично работает, в этом foreach, могу ли я также получить первую часть адреса электронной почты?

charlie 14.06.2018 13:37

Это хорошее чистое решение.

TPHughes 14.06.2018 13:37

@charlie Обновленный код для получения строк до и после @.

Lovepreet Singh 14.06.2018 13:40

Эта строка: $toAddresses2 = explode('@', $a);

Создадим массив, подобный этому: ["0": "ff", "1": "g.com"]

Таким образом, вы можете выбрать второе значение, используя индекс 1, например, $toAddresses2[1].

Я бы посоветовал проверить, существует ли значение, если какой-либо из адресов в строке недействителен по какой-либо причине.

Так было бы

echo isset($toAddresses2[1]) ? $toAddresses2[1] . "<br />" : null;

Используйте в качестве примера array_slice (): -

$toAddresses = explode(',', $$result["to_addresses"]);
foreach($toAddresses as $a) {
    $toAddresses2 = explode('@', $a);
    foreach(array_slice($toAddresses2,1) as $b) {
        echo $b.'<BR>';
    }
}

array_slice ($ array, $ index) вернет нарезанный массив из данного индекса.

Try this $toAddresses = explode(',', "[email protected],[email protected]"); foreach($toAddresses as $k=>$a) { $toAddresses2 = substr($a,strpos($a,'@' )+1); echo $toAddresses2 ."\n"; }

Другие вопросы по теме