Klickbara länkar och mailadresser

PHP

1 svar · 279 visningar · startad av Niklasson

Medlem sedan nov. 2000857 inlägg
Trådstart#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);
261 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)