Автоматически создавать ссылку электронной почты из статического текста - PullRequest
8 голосов
/ 09 марта 2009

Я пытаюсь выяснить, как автоматически связать адреса электронной почты, содержащиеся в простом тексте, из БД при печати на странице, используя php.

Пример, теперь у меня есть:

Lorem ipsum dolor email@foo.com sit amet

И я хотел бы преобразовать его (на лету) в:

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

Ответы [ 3 ]

22 голосов
/ 09 марта 2009

Вам нужно будет использовать регулярное выражение:

<?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
12 голосов
/ 16 июля 2014

Попробуйте эту версию:

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;
}

Обновление 31/10/2015: исправление для адреса электронной почты, например 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;
}
0 голосов
/ 09 марта 2009

Я думаю, это то, что вы хотите ...

  //store db value into local variable
    $email = "foo@bar.com";
    echo "<a href='mailto:$email'>Email Me!</a>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...