Avatar billede supersquirrel Nybegynder
31. januar 2008 - 21:17 Der er 5 kommentarer og
1 løsning

find link med preg_replace

Hejsa,

Jeg håber der sidder en flink person derude, som gerne vil hjælpe mig med at gøre sådan at man i en tekst finder et link (startende med http://), også laver det til et link.

Jeg håber nogen gider, da jeg virkelig ikke kan forstå alle der []/\.*+@ og hvad der nu ellers står i sådan en.

- Eller ihvertfald må personen gerne forklare mig hvordan det hele fungerer! :D

Tak på forhånd! :)
Avatar billede jakobdo Ekspert
31. januar 2008 - 21:24 #1
Prøv at kig på sidste svar jeg har givet i denne tråd: http://www.eksperten.dk/spm/790633
Avatar billede rosvall Nybegynder
31. januar 2008 - 21:35 #2
Hvis du er på en linux/unix-maskine og har bare lidt lyst til at lære regulære udtryk, kan jeg virkelig anbefale dig at installere kregexpeditor, som er en grafisk editor til regulære udtryk.
Den understøtter svjv dog kun posix reg. udtryk (php ereg_ funktionerne).
Ellers kan du lege lidt med http://www.regextester.com/
At kunne regulære udtryk, bare til husbehov, er virkelig nyttigt i mange situationer.

Ang. dit aktuelle problem, findes der et hav af tråde der handler om præcis det samme her på siden. Se kategorien http://www.eksperten.dk/spm/Programmering/RegExp
Avatar billede supersquirrel Nybegynder
31. januar 2008 - 21:37 #3
Okay det virker helt fint, bortset fra hvis der kommer tekst EFTER linket..

function text_url($str, $target, $css_class)
{
    $ins_str = "";
    if($css_class)
        $ins_str .= " class=\"".$css_class."\"";
    if($target)
        $ins_str .= " target=\"".$target."\"";
    $str = preg_replace ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\"".$ins_str.">\\1://\\2</a>", $str);
    $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"http://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
    $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
    return $str;
}

Hvad kan jeg gøre ved det?
Avatar billede jakobdo Ekspert
31. januar 2008 - 21:40 #4
Her hos mig virker det nu fint nok.

<?php
//http://www.eksperten.dk/spm/790633

function text_url($str, $target, $css_class)
{
    $ins_str = "";
    if($css_class)
        $ins_str .= " class=\"".$css_class."\"";
    if($target)
        $ins_str .= " target=\"".$target."\"";
    $str = text_expand($str);
    $str = preg_replace ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\"".$ins_str.">\\1://\\2</a>", $str);
    $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"http://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
    $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+[a-z0-9~#%@&:;=!',_æøå\(\)\?\/\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
    return text_reduce($str);
}

function text_expand($str)
{
    return " ".$str." ";
}

function text_reduce($str)
{
    return substr($str, 1, -1);
}

$text = 'Dette er en tekst, hvor jeg gerne vil linke til http://www.dr.dk. Men jeg kunne også godt tænke mig en is.';

print text_url($text,"_blank",'default');

?>
Avatar billede supersquirrel Nybegynder
31. januar 2008 - 22:06 #5
Så virker det! :) Mange tak
Avatar billede jakobdo Ekspert
01. februar 2008 - 06:40 #6
Takker for point.
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