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

Editar

Gracias 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);
        }
    }
}

Respuestas a la pregunta(8)

Su respuesta a la pregunta