Avatar billede per-d Nybegynder
08. november 2004 - 19:09 Der er 4 kommentarer og
1 løsning

Problem med aktivering af link

Hej eksperter,

Jeg er igang med at lave en mailinglist system og i den forbindelse skal en bruger sende en mail til hans liste, problemet er bare at bruger skal kunne bruge html i denne liste, med skal også være sådan at hvis han kun skriver http://www.leweb.dk Så skal den lave det om til <a href="http://www.leweb.dk">LEweb.dk</a> Det virker også fint nok bruger tagster.

Men problemet på står hvis brugeren har skrevet html koden til et billedlink <img src=""> så tag tagster og genkender det der står i src som et link og det er jo ikke heldig det samme opstå selvfølgelig hvis brugeren bruger background-image: url(http://et eller andet);

Eller hvis han simpel hen skriver den korrekte kode til linket.

Nogen som kan omskriver tagster så den tag højde for det.
Avatar billede coderdk Praktikant
08. november 2004 - 21:49 #1
Hvis dine brugere kan finde ud af at vise billeder i HTML, kan de vel også lave links :P
Avatar billede coderdk Praktikant
08. november 2004 - 21:54 #2
Anyway, gider ikke rode med tagster, så her har du en der er lidt mindre, som kan det du eftersøger:

<?php

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

    $txt = <<<STOP
jdskfjdskf hest pip. www.played.dk www.coder.dk osv osv hehe
nissemand har guld i mund osv. <img src="http://www.eksperten.dk/img/elogo.png">osv osv
STOP;

    echo url2link($txt);

?>
Avatar billede per-d Nybegynder
08. november 2004 - 21:55 #3
Ja, sådan kan man da godt se på det, men jeg har bare oplevet det modsatte, men nu har jeg fundet et script der kan tage højde for det så lukker dette spm.
Avatar billede per-d Nybegynder
08. november 2004 - 21:56 #4
du fik pointene selvom jeg ikke bruger det script.
Avatar billede coderdk Praktikant
08. november 2004 - 22:00 #5
hehe ok tak :) Hvis du ville kigge på det senere er der en lille rettelse:

<?php

    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))/im";
        $domain = "/(^| )(www\.$url)/im";
        $protomail = "/(^| )(mailto:($username@$host))/im";
        $mail = "/(^| )($username@$host)/im";
        $replacements = array(
                $protodomain => "\\1<a href=\"\\2\" target=\"_blank\">\\4</a>"
                ,$domain => "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"
                ,$protomail => "\\1<a href=\"\\2\">\\3</a>"
                ,$mail => "\\1<a href=\"mailto:\\2\">\\2</a>"
            );
        return preg_replace( array_keys( $replacements ), array_values( $replacements ), $txt );
    }

    $txt = <<<STOP
jdskfjdskf lars rox. www.played.dk www.coder.dk osv osv hehe
nissemand har guld i mund osv. <img src='http://www.eksperten.dk/img/elogo.png'>osv osv
http://coder.dk/?gal=ja totalt url(http://www.coder.dk/) osv osv
abuse@microsoft.com mailto:abuse@microsoft.com (abuse@microsoft.com)
STOP;

    echo url2link($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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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