Обнаружение электронных писем в тексте
Я пытаюсь создать функцию, которая переводит каждое вхождение обычного текстового адреса электронной почты в данной строке в егоhtmlized версия.
Допустим, у меня есть следующий код, гдеhtmlizeEmails
это функция, которую я ищу:
$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>."
Если возможно, я бы хотел, чтобы эта функция использовалаfilter_var
функция, чтобы проверить, является ли электронная почта действительной.
Кто-нибудь знает как это сделать? Спасибо!
Редактировать:Спасибо за ответы, я использовал регулярное выражение Shocker для сопоставления потенциальных адресов электронной почты, а затем,только еслиfilter_var
подтверждает это, он заменяется.
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);
}
}
}