Detección de correos electrónicos en un texto
Estoy tratando de crear una función que traduzca cada aparición de una dirección de correo electrónico de texto sin formato en una cadena dada en su htmlized versión
Digamos que tengo el siguiente código, dondehtmlizeEmails
es la función que estoy buscando:
$str = "Send me an email to [email protected].";
echo htmlizeEmails($str); // Echoes "Send me an email to <a href="mailto:[email protected]">[email protected]</a>."
Si es posible, me gustaría que esta función use elfilter_var
función para verificar si el correo electrónico es válido.
¿Alguien sabe como hacer esto? ¡Gracias
EditarGracias por las respuestas, utilicé la expresión regular de Shocker para que coincida con las posibles direcciones de correo electrónico y luego,solament Si elfilter_var
lo valida, se reemplaza.
function htmlizeEmails($text)
preg_match_all('/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/', $text, $potentialEmails, PREG_SET_ORDER);
$potentialEmailsCount = count($potentialEmails);
for ($i = 0; $i < $potentialEmailsCount; $i++) {
if (filter_var($potentialEmails[$i][0], FILTER_VALIDATE_EMAIL)) {
$text = str_replace($potentialEmails[$i][0], '<a href="mailto:' . $potentialEmails[$i][0] .'">' . $potentialEmails[$i][0] .'</a>', $text);
}
}
}