Avatar billede heavybreezer Nybegynder
14. december 2004 - 17:32 Der er 9 kommentarer og
1 løsning

url til link problem

Nogen der har en idé om, hvorfor denne funktion:
$source = "http://www.freelunchdesign.com/icy_mirrors.shtml";

eregi_replace("((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-| æ|ø|å)+){0,}",
                      "<a href=\"\\0\">\\0</a>", $source);

kun udskriver http://www.freelunchdesign.com/icy som et link og lader _mirrors.shtml være uden for linket?
Avatar billede stefmeister Nybegynder
14. december 2004 - 17:35 #1
vel fordi at man ikke "må" bruge underscore ifølge scriptet.
Avatar billede stefmeister Nybegynder
14. december 2004 - 17:36 #2
ved ikke hvordan man retter det
Avatar billede ranglen Nybegynder
14. december 2004 - 17:39 #3
((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((_|\=|[a-z0-9]|\?|&|\/|\.|-| æ|ø|å)+){0,}

hvis du tilføjer '_|' i den sidste blok, burde den tage sidste del med også
Avatar billede heavybreezer Nybegynder
14. december 2004 - 18:06 #4
Jep.. takker :)
Men funktionen virker ikke, hvis man kun skriver www.test.com, der SKAL http:// foran..

Hvordan får jeg det til at virke med kun www. foran?
Avatar billede stefmeister Nybegynder
14. december 2004 - 18:30 #5
fjerner de første par tags så istedet for denne:

((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((_|\=|[a-z0-9]|\?|&|\/|\.|-| æ|ø|å)+){0,}

så skal du skrive denne:

([a-z0-9@:%_.~#\-\?&-]+)((_|\=|[a-z0-9]|\?|&|\/|\.|-| æ|ø|å)+){0,}
Avatar billede heavybreezer Nybegynder
14. december 2004 - 18:36 #6
Den går ikke, for hvis linket hedder www.test.com, går den kun til www.test.com, og ikke med http:// foran, dvs. jeg får fejl
Avatar billede coderdk Praktikant
14. december 2004 - 19:09 #7
((f|ht)tps?://)?([a-z0-9@:%_.~#\-\?&-]+)((_|\=|[a-z0-9]|\?|&|\/|\.|-| æ|ø|å)+){0,}
Avatar billede ranglen Nybegynder
14. december 2004 - 19:22 #8
coderdk, den holder vist heller ikke. Men denne burde holde (hvem er frisk på at lave en som er pænere/mere smart?):


function checkurl($a, $b, $c, $d, $e){
    $pre = $a != "" || $c != "" ? "" : "http://"; // smid http på, hvis der ikke står noget

    // $a: 1)http
    // $b: 1)www
    // $c: 2)http
    // $d: 2)www
    // $e: resten...
    return "<a href=\"$pre$a$b$c$d$e\">$a$b$c$d$e</a>";
}

echo preg_replace("`(?:(?:(http://)?(www\.))|(?:(http://)(www\.)?))([a-z0-9@:%_.~#\-\?&-]+)(?:(?:_|\=|[a-z0-9]|\?|&|\/|\.|-| æ|ø|å)+){0,}`ie",
'checkurl("\\1", "\\2", "\\3", "\\4", "\\5")', $source);



synes at virke ved:

http://www.domain.dk
http://domain.dk
www.domain.dk
Avatar billede htm Nybegynder
14. december 2004 - 19:26 #9
I stedet for at opfinde den dybe tallerken igen, vil jeg anbelfa at bruge denne:

Hent tagster_lib.php fra http://www.ljweb.com/usefulscripts/

Det er det samme som bliver brugt her på E.
Avatar billede coderdk Praktikant
14. december 2004 - 21:52 #10
Tjah, jeg har faktisk en 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 );
    }

Den fanger også mail, ftp osv...
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