Avatar billede alex15 Nybegynder
19. oktober 2009 - 19:18 Der er 8 kommentarer og
1 løsning

Få php eller html til automatisk at lave link når den møder et link i en kommentar

Hej Eksperter,

Jeg har lavet en nyheds funktion på min side.

Denne funktion henter så nyheden fra databasen på følgende måde:

echo "".nl2br(stripslashes($row["nyhed"]))."";

Hvordan kan jeg gøre så at evt. link inde i nyheden bliver smidt ind i en <a href="XXX.dk">Linket</a>

Er dette overhoved muligt?

Alex
Avatar billede virtual1ty Nybegynder
19. oktober 2009 - 19:31 #1
Prøv det her:

<?php   
$text = "Dette er en test http://www.google.dk";

$text = preg_replace( '/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '<a href="\0">\4</a>', $strText );
   
echo $text;
   
?>
Avatar billede virtual1ty Nybegynder
19. oktober 2009 - 19:33 #2
Rettelse:

$text = preg_replace( '/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '<a href="\0">\4</a>', $text );
Avatar billede alex15 Nybegynder
19. oktober 2009 - 21:11 #3
Det virker jo perfekt kan man sige.

Kan man også gøre så det fungere hvis brugeren skriver linket på alle disse måder:

www.minside.dk

https://www.minside.dk/

http://www.minside.dk/

minside.dk
Avatar billede virtual1ty Nybegynder
19. oktober 2009 - 21:27 #4
Det burde kunne lade sig gøre, men regular expressions er ikke ligefrem min stærke side, så det kan jeg ikke hjælpe med (ovenstående var et eksempel jeg fandt vha. Google).

Ellers kunne du selv prøve at søge på Google efter et eksempel der matcher alle fire måder, det burde kunne findes et eller andet sted.
Avatar billede alex15 Nybegynder
19. oktober 2009 - 21:31 #5
Okay ja, men du skal i hvert fald have tak for hjælpen :)

Det er nemlig heller ikke ligefrem min stærke side ;)

Men lav lige et svar, hvis der ikke skulle komme flere kommentarer ...
Avatar billede virtual1ty Nybegynder
19. oktober 2009 - 21:36 #6
Værsgo :)
Avatar billede cronaldo Nybegynder
25. oktober 2009 - 02:39 #7
Okay, nu er reg_exp heller ikke min HELT stærke side, men noget siger mig, at der i det givne eksempel tages højde for flg. måder at starte en url på:

http://
http://
ftp://
ftps://

hvordan det lige kan gøres med www kan jeg dog ikke gennemskue :)
Avatar billede alex15 Nybegynder
26. oktober 2009 - 11:01 #8
Det er korrekt.

Jeg kan heller ikke lige gennemskue hvordan man får den til det nemlig.
Avatar billede cronaldo Nybegynder
26. oktober 2009 - 15:49 #9
$text = preg_replace( '/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '<a href="\0">\4</a>', $text );
$text = preg_replace( '/(www|WWW|Www|WwW|WWw|wwW)+)(\/)?(\S+)?/i', '<a href="\0">\4</a>', $text );

Prøv lige at se, om det virker ... Det er lidt et sats, men det kunne ske at virke :) tror dog det er en lorte løsning der nok kan laves bedre hvis du får fat i fx olebole eller en af de skarpe reg.exp.-hjerner ;)
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