Я пытаюсь создать функцию, которая переводит каждое вхождение простого текстового адреса электронной почты в заданную строку в 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
, чтобы проверить, действительно ли это письмо.
Кто-нибудь знает, как это сделать? Спасибо!
Edit:
Спасибо за ответы, я использовал Rexx Shocker для соответствия потенциальным адресам электронной почты, а затем только, если filter_var
проверяет его, он заменяется.
function htmlizeEmails($text)
preg_match_all('/([a-zA-Z0-9._%+-][email protected][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);
}
}
}