Я пытаюсь создать функцию, которая переводит каждое вхождение обычного текстового адреса электронной почты в заданной строке в htmlized версию.
Допустим, у меня есть следующий код:где htmlizeEmails
- это функция, которую я ищу:
$str = "Send me an email to bob@example.com.";
echo htmlizeEmails($str); // Echoes "Send me an email to <a href="mailto:bob@example.com">bob@example.com</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);
}
}
}