Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
<?php
$contatos = "Fulano de tal email@email.com; Fulana da silva fulana@email.com; teste@teste.com";
?>
Tenho que retornar os valores desta variável da seguinte forma:
nome: Fulano de tal
email: email@email.com
nome: Fulana da silva
email: fulana@email.com
email: teste@teste.com
Ou seja, o nome esta associado ao email mas nem sempre tenho um nome de destinatário. Como fazer isso em PHP?
outro jeito
$contatos = "Fulano de tal email@email.com; Fulana da silva fulana@email.com; teste@teste.com";
$arr = explode(';', $contatos);
foreach( $arr as $v )
{
$arr2 = explode(' ', $v);
$email = end($arr2);
unset( $arr2[ key($arr2) ] );
echo 'Nome: ' . implode( ' ', $arr2 ) . '<br />';
echo 'Email: ' . $email . '<br /><br />';
}>
outro jeito
$contatos = "Fulano de tal email@email.com; Fulana da silva fulana@email.com; teste@teste.com";
$arr = explode(';', $contatos);
foreach( $arr as $v )
{
$arr2 = explode(' ', $v);
$email = end($arr2);
unset( $arr2[ key($arr2) ] );
echo 'Nome: ' . implode( ' ', $arr2 ) . '<br />';
echo 'Email: ' . $email . '<br /><br />';
}
Obrigado pela ajuda, funcionou perfeitamente.
Outra forma:
$contatos = "Fulano de tal email@email.com; Fulana da silva fulana@email.com; teste@teste.com";
$parts = preg_split('@(.*?) ([\w\d\.\-]+\@[\w\d\.\-]+);@', $contatos, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$rows = array_chunk($parts, 2);
Saida:
Array
(
[0] => Array
(
[0] => Fulano de tal
[1] => email@email.com
)
[1] => Array
(
[0] => Fulana da silva
[1] => fulana@email.com
)
[2] => Array
(
[0] => teste@teste.com
)
)
@braços e fique com Deus!
você precisa de mais um delimitador
if(isset($contatos[1])){ }else{algo assim resolve