webForumDet fria alternativet

Länka mailadresser i sträng

PHP

2 svar · 244 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#1

Hej!
Hittade den här funktionen som fungerar nästan som jag vill. Jag vill inte att mailadresser som redan är länkade ska bli länkade en gång till. Luddigt förklarat kanske, men om en sträng innehåller
<a href="mailto:doh@doman.com">Redan länkad</a> så kommer den strängen efter att ha passerat funktionen ovan att se ut såhär:
<a href="<a href="mailto:mailto:doh@doman.com>mailto:doh@doman.com</a>">Redan länkad</a>. Vilket inte är specillt bra! Hur gör jag om funktionen så att den inte länkar mailadresserna dubbelt?

$text = preg_replace("/([w.-_]+)(@)([w.-_]+)(\\.)([w.-_]+)/i", "<a href=\"mailto:$0\">$0</a>",$text);
Medlem sedan dec. 2003153 inlägg
#2

Tyckte det bara skulle vara att lägga till en negation. Nu är jag oerhört trött så det blev såhär:

$str = 'En [email]annan@pgo.nu[/email] gär nu.'."\n".
  '<a href="mailto:doh@doman.com">Redan länkad</a>'."\n".
  'men inte denna [email]ema@mail.com[/email]';

// Tar bort redan länkad
$do = preg_replace("'(<a href=.mailto.)([a-zA-Z0-9.-\_]+)(@)([a-zA-Z0-9.-\_]+)(\.)([a-zA-Z0-9]{2,5})(.>.*</a>)'",
                  '$2$3$4$5$6', $str);
// Länkar om alla
echo preg_replace("'([a-zA-Z0-9.-\_]+)(@)([a-zA-Z0-9.-\_]+)\.([a-zA-Z0-9]{2,5})'",
                  '<a href="mailto:$1$2$3$4$5">$1$2$3$4$5</a>', $do);

Detta ska bara gå att göra bättre... men det är en lösning iaf... akta dig dock för e-mailadresser till underdomäner (mail@sub.dom.tld), du får fixa så det funkar på sånna själv.

Medlem sedan mars 20025 907 inlägg
#3

Tack! Men jag lyckades lösa det på ett annat sätt. Om man använder mitt mönster ovan och lägger in \s först i mönstret så krävs det ett blanksteg/radmatning eller liknande innan själva mailadressen. På så vis får jag även behålla texten som står i länken ("redan länkad").

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)