У меня есть строка в базе данных адресов электронной почты, которую мне нужно разделить:
[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
Я хочу получить только часть после @, но не уверен, где я ошибся
Вы также можете использовать list($user, $domain) = explode('@', $a); echo $domain;






удалить 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 Обновленный код для получения строк до и после @.
Эта строка: $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"; }
$toAddresses2 = explode('@', $a)[1]; echo $toAddresses2;Вам нужно только второе значение индекса. Нет необходимости во втором foreach