Avatar billede chrille_the_mat Nybegynder
30. april 2007 - 13:32 Der er 3 kommentarer og
1 løsning

Hjælp til autolink

Hej derude..

Jeg har dette script til at lave automatiske links i $string..

  $string = eregi_replace ('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)', '
<a href="\1" target="_blank">\1</a>', $string);
  $string = eregi_replace('([[:space:] ()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1
<a href="http://\2" target="_blank">\2</a>', $string);


Dette virker skam også fint.. Men når der allerede i $string i forvejen er nogle færdige links (<a href="www.something">www.something</a>) autolinker den også dem, så de i forvejen færdige links kommer til at se således ud:
<a href="<a href="www.something">www.something</a>"><a href="www.something">www.someting</a></a>

Hvad dælen gør jeg lige?
Avatar billede jakobdo Ekspert
30. april 2007 - 14:05 #1
Jeg har selv brugt denne funktion:

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_callback ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)/i", create_function('$matches','if( strlen($matches[2]) > 25 ) $name = substr($matches[2],0,25) . ".."; else $name = $matches[2]; return "<a".$ins_str." href=\"{$matches[1]}://{$matches[2]}\">$name</a>";'),$str);
    $str = preg_replace_callback ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)/i",                    create_function('$matches','if( strlen($matches[3]) > 25 ) $name = substr($matches[3],0,25) . ".."; else $name = $matches[3]; return "<a".$ins_str." href=\"http://$matches[2]$matches[3]\">$name</a>";'), $str);
    $str = preg_replace_callback ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\%\^\{\}]+)/i",                    create_function('$matches','if( strlen($matches[3]) > 25 ) $name = substr($matches[3],0,25) . ".."; else $name = $matches[3]; return "<a".$ins_str." href=\"ftp://$matches[2]$matches[3]\">$name</a>";'), $str);

  return $str;
}

Om den virker på færdige links eller ej, det ved jeg faktisk ikke, prøv! :o)
Avatar billede chrille_the_mat Nybegynder
08. maj 2007 - 21:44 #2
Virker desværre ikke... Men du må skam gerne få point alligevel.. :-)
- Smid et svar..
Avatar billede jakobdo Ekspert
09. maj 2007 - 08:09 #3
Jeg vil ikke have point, hvis ikke skidtet virker! :o)
Avatar billede chrille_the_mat Nybegynder
04. juli 2007 - 16:58 #4
fair :)
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