Avatar billede morten_linder Praktikant
04. februar 2008 - 16:01 Der er 4 kommentarer

Erstatte emailadresser og links med klikbare emailadresse og link

Jeg har en variabel $text, som indeholder en masse af mit ævl, nogle email adresser og nogle url'er.

dem vil jeg så gerne erstatte med nogle klibare nogle :)

hvordan gør jeg det?
Avatar billede nielle Nybegynder
04. februar 2008 - 16:55 #1
Sådan til emails:

$pattern = "\b[^@ ]+@(?:[\w-]+\.)+[a-z]{2,}\b";
$phpPattern = "/$pattern/i";

$text = preg_replace($phpPattern, "<a href='mailto:$0'>$0</a>", $text);
Avatar billede nielle Nybegynder
04. februar 2008 - 16:59 #2
Sådan til urls:

$pattern = '
((?:https?|ftp)://)?            # scheme
([\w-]+\.)+                    # host - domain og subdomain\'s
([a-z]{2,})                    # host - tld
(:\d+)?                        # port
(/~?[^\s/?&]*)*                # path
([?&][^\s=?&\#]+=[^\s=?&\#]*)*  # query - after the question mark ?
(\#[^\s]+)?                    # fragment
';
$phpPattern = "{" . $pattern . "}x";

$text = preg_replace($phpPattern, "<a href='$0'>$0</a>", $text);
Avatar billede olebole Juniormester
04. februar 2008 - 23:02 #3
<ole>

nielle >> Denne streng:
    $s = "Blabla bla bla@noget.com blabla bla";

- i kombination med dit første eksempel, resulterer for mig i:
    Blabla bla <a href='mailto:bla@<a href='noget.com'>noget.com</a>'>bla@<a href='noget.com'>noget.com</a></a> blabla bla

/mvh
</bole>
Avatar billede coderdk Praktikant
05. februar 2008 - 21:49 #4
Jeg har sådan en funktion liggende:

    function url2link($txt)
    {
        $username = "[a-z0-9_\-]+";
        $password = "[a-z0-9_\-!#]+";
        $host = "[a-z0-9\-]+\.[a-z0-9\-\.]+";
        $port = "\d{1,5}";
        $path = "\/[a-z0-9\/\-_\.\(\)\%#]*";
        $querystr = "\?[a-z0-9&=\-_\.%\(\)#]+";
        $proto = "(https?|ftp):\/\/";
        $url = "$host(:$port)?($path($querystr)?)?";
        $protodomain = "/$proto(($username(:$password)?@)?$url)/i";
        $domain = "/(^| )(www\.$url)/im";
        $protomail = "/mailto:($username@$host)/i";
        $mail = "/(^| )($username@$host)/im";
        $replacements = array(
                $protodomain => "<a href=\"\\0\" target=\"_blank\">\\2</a>"
                ,$domain => "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"
                ,$protomail => "<a href=\"\\0\">\\1</a>"
                ,$mail => "\\1<a href=\"mailto:\\2\">\\2</a>"
            );
        return preg_replace( array_keys( $replacements ), array_values( $replacements ), $txt );
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester