webForumDet fria alternativet

Klickbara länkar och mailadresser

PHP

1 svar · 276 visningar · startad av Niklasson

Medlem sedan nov. 2000857 inlägg
Frågan#1

Jag hittade en liten kod som fungerar på vanliga länkar. Tror det var SPiN som hade fixat ihop den..

$text = preg_replace ( "/((http:\/\/|https:\/\/|ftp:\/\/|mailto:|file:\/\/|telnet:\/\/|gopher:\/\/)|(www\.))([\w\.\/\?]+)/i", "<a href=\"\\2\\3\\4\" target=\"_blank\">\\2\\3\\4</a>", $text );

Jag skulle vilja ha samma sak med mailadresser. I denna koden måste man ju använda sig av mailto: för att den skall ändra, det vill jag alltså inte. Det räcker ju med ett @.

Om någon har lust att även plocka bort mailto file telnet gopher ur ovanstående, bara för att trimma det lite så vore det väldigt bra. Jag har försökt, men det blir fel.. :P

Vore bussigt om någon ville knåpa ihop någon användbart..

Medlem sedan nov. 2000857 inlägg
#2

Det har löst sig, åtminstonde nästan.. ;)

Fick hjälp av stevenet, så allt fungerar förutan när man avslutar en mening med en webbadress och sätter en punkt.

Är det någon som kan hjälpa oss fixa det? Bifogar koden, hoppas den visas rätt:

$text = preg_replace("#([\n ])([a-z]+?)://([^, \n\r]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $text);
$text = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \n\r]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>", $text);
$text = eregi_replace("([_a-z0-9\.-]+)@([_a-z0-9\.]+)\.([a-z]{2,4})","<a href=\"mailto:\\1@\\2.\\3\">\\1@\\2.\\3</a>", $text);
251 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)