Avatar billede Slettet bruger
17. juli 2009 - 20:39 Der er 1 kommentar og
1 løsning

preg_replace med links fungerer ikke ordenligt

Godaften folkens..

Jeg sidder og leger med preg_replace funktionen, da jeg vil have den til at lave tekst med (http://, www, og http://www) om til hyperlinks..

Funktionen ser sådan her ud:

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


Problemet er at den kun laver to af de ovennævnte typer om til links:

http://www.test.dk <- den virker
http://test.dk <- den virker
www.test.dk <- den virker ikke


Hvordan gør jeg således at sidste eksempel også automatisk bliver lavet om til et link?
Avatar billede Slettet bruger
17. juli 2009 - 22:18 #1
Nå... Jeg har langt om længe selv fået det løst nu vha. følgende funktion:

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


Er dog stødt på et lidt andet problem nu som jeg i stedet giver points for at få besvaret ;) Ovenstående vil ikke registrere (æ, ø og å) og stopper derfor linket, hvis den støder på disse. Dette er dog ikke så hensigtsmæssigt, da der nu om dage findes links med æ,ø og å.. Så hvordan løser jeg dette ?
Avatar billede Slettet bruger
22. juli 2009 - 21:14 #2
Prøver at gribe det an på en anden måde i stedet, så lukker topic..
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