使用 PHP 将电子邮件地址转换为具有单独用户/域变量的 mailto



我有以下函数,基于 SO 中的答案,它将字符串中的电子邮件地址转换为 mailto 链接。但是,我正在尝试更进一步,将用户名和域名分成单独的变量。相反,下面的函数将最后一个句点之前的所有内容分隔到一个变量中,将句点之后的所有内容分隔到另一个变量中。

function emailize($str)
{
$mail_pattern = "/([A-z0-9._-]+@[A-z0-9_-]+.)([A-z0-9_-.]{1,}[A-z])/";
$str = preg_replace($mail_pattern, '<a class='obfuscate' data-user="$1" data-domain="$2" href="#">Click Here</a>', $str);
return $str;
}

使用 test@example.com 作为电子邮件地址,我希望test1 美元,example.com2 美元。

此外,我将传递一个可能有多个电子邮件地址的大字符串。

谢谢

通过更改捕获组,您可以实现所需的目标。捕获组中的:?使其无法捕获。所以

([A-z0-9._-]+)@([A-z0-9_-]+.(?:[A-z0-9_-.]{1,}[A-z]))

应将用户名作为 1 个捕获组,将域作为另一个捕获组。

演示:https://regex101.com/r/BF7p2g/1/

最新更新