webForumDet fria alternativet

leta länkar

7 svar · 309 visningar · startad av Nexus86

Nexus86Medlem sedan okt. 20023 030 inlägg
#1

Någon som har (eller kan göra) en kod som letar efter url:er i en text och länkar dessa automatiskt? Jag tittade på Mungo's script i Script - PHP men det blir ett stort fel om man skriver in med http://. Detta fick jag när jag skrev http://www.nintendo.com/

<a target="_blank" href="http://<a target="_blank" href="http://www.nintendo.com/">http://www.nintendo.com/</a>">www.nintendo.com/">http://www.nintendo.com/</a></a>

och den förstog inte www.domän.com/index.php**?foo=bar** heller.. Någon som kan göra ett som klarar båda dessa? Och eventuellt även med www. och emailadresser..

EDIT // Länk till hans script: http://www.webforum.nu/showthread.php?s=&postid=533880#post533880

nkrantzMedlem sedan apr. 2002830 inlägg
Nexus86Medlem sedan okt. 20023 030 inlägg
#3

Den fungerar inte heller ju.. Provade med samma text (http://www.nintendo.com/) och resultatet blev

<a href="http://www." target="_blank"><u>http://www.</u></a>nintendo.com/

Ingen som råkar sitta med något bra, fungerande script?

MatteMedlem sedan aug. 20002 975 inlägg
#4

Testa det här:

$text = "En länk av http://www.webforum.nu eller  www.webforum.nu/showthread.php?s=&threadid=66250 eller
         http://forum.webforum.nu , men inte forum.webforum.nu";

$text = preg_replace("/(?<=^|\\s)(www\\.([-a-zA-Z0-9_]+\\.)*[-a-zA-Z0-9_]+\\.[-a-zA-Z0-9_])/", "http://$1", $text);

$search = "/(?<=^|\\s)(http:\\/\\/|https:\\/\\/|ftp:\\/\\/)(([-a-zA-Z0-9_]+\\.)*[-a-zA-Z0-9_]+\\.[-a-zA-Z0-9_]{2,8}[^\\s]*)(?=\\s|$)/";
$replace = "<a href=\"$1$2\">$2</a>"; 
$text = preg_replace($search, $replace, $text);

echo $text;
Nexus86Medlem sedan okt. 20023 030 inlägg
#5

Tackar så mycket! Nu är det bara två saker som saknas. Inte helt nödvändigt men skulle vara ytterst bra att ha. Om den kunde förstå emailadresser och

Besök min sida https://www.foo.bar.

D.v.s. punkter.

MatteMedlem sedan aug. 20002 975 inlägg
#6

Testa det här:

$text = preg_replace("/([-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,8})/", "<a href=\"mailto:$1\">$1</a>", $text);

Vad menar du med punkter?

Nexus86Medlem sedan okt. 20023 030 inlägg
#7

Om man t.ex. Skriver som jag skrev, "Besök min sida https://www.foo.bar." så ska inte sista punkten komma med i länken.

Nexus86Medlem sedan okt. 20023 030 inlägg
#8

Det fungerade med en punkt på slutet på email-adressen.. :)

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)