Esto ha quedado así, lo pongo en un simple ejemplo para quien le interese.
NOTA: ya se que es un chorro de expreión regular pero es la bomba porque no admite según que correos falsos o mal sentenciados. Código PHP:
$correo_destinatarios="hola, mi correo es [email protected], el de mi suegra [email protected] y el de mi gato [email protected] yata.";
$secuencia= "(([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*)))";
preg_match_all ($secuencia, $correo_destinatarios, $correo);
for($x=0;$x<count($correo[0]);$x++){
$mail .= $correo[0][$x].", ";
}
echo $mail;
Si nos fijamos, en la variable
$correo_destinatarios hay el texto mezclado junto con varios correos electrónicos. La variable
$secuencia contiene la cadena de la expresión regular de un correo electrónico. En la variable
$correo tenemos un array multidimensional y en la posición [0] tenemos un array con el resultado de las coincidencias de toda la expresión regular.
Para verlo claro he puesto el for así a lo tonto, espero que de este modo quede mas claro.
Suerte con vuestros proyectos.