从静态文本自动创建电子邮件链接

时间:2009-03-09 15:29:28

标签: php email url hyperlink

我正在尝试弄清楚如何使用php在页面中打印时从db中自动链接简单文本中包含的电子邮件地址。

示例,现在我有:

Lorem ipsum dolor email@foo.com sit amet

我想将它(动态)转换为:

Lorem ipsum dolor <a href="mailto:email@foo.com">email@foo.com</a> sit amet 

3 个答案:

答案 0 :(得分:22)

您需要使用正则表达式:

<?php

function emailize($text)
{
    $regex = '/(\S+@\S+\.\S+)/';
    $replace = '<a href="mailto:$1">$1</a>';

    return preg_replace($regex, $replace, $text);
}


echo emailize ("bla bla bla e@mail.com bla bla bla");

?>

在下面的示例文本中使用上述功能:

blalajdudjd user@example.com djjdjd 

将变为以下内容:

blalalbla <a href="mailto:user@example.com">user@example.com</a> djjdjd

答案 1 :(得分:12)

试试这个版本:

function automail($str){

    //Detect and create email
    $mail_pattern = "/([A-z0-9_-]+\@[A-z0-9_-]+\.)([A-z0-9\_\-\.]{1,}[A-z])/";

    $str = preg_replace($mail_pattern, '<a href="mailto:$1$2">$1$2</a>', $str);

    return $str;
}

2015年10月31日更新:修复了abc.def@xyz.com

等电子邮件地址
function detectEmail($str)
{
    //Detect and create email
    $mail_pattern = "/([A-z0-9\._-]+\@[A-z0-9_-]+\.)([A-z0-9\_\-\.]{1,}[A-z])/";
    $str = preg_replace($mail_pattern, '<a href="mailto:$1$2">$1$2</a>', $str);

    return $str;
}

答案 2 :(得分:-1)

我认为这就是你想要的......

  //store db value into local variable
    $email = "foo@bar.com";
    echo "<a href='mailto:$email'>Email Me!</a>";