17. marts 2008 - 10:54Der er
12 kommentarer og 1 løsning
Find e-mail adresse i tekst og erstat med anden tekst
Jeg har brug for en funktion der modtager en tekst og løber denne igennem og finder alle forekomster af email adresser, fx <a href="mailto:test@mail.dk">Noget tekst</a>.
Dvs. alt imellem <a href="mailto: og </a> kan være hvad som helst!
Funktionen skal returnere e-mail adressen der står lige efter mailto:
Jeg HAR kigget lidt på regular expressions da jeg mener at det vil kunne klare jobbet - HVIS man kender til syntaksen i RegExp, og det gør jeg desværre ikke...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Lige nu vil jeg bare gerne have funktionen til at returnere e-mail adressen! Herefter skal jeg have "pakke" adressen ind i noget javascript mht. at skjule e-mailen for spam-robotter.
Lige nu er det dog ovennævnte RegExp der volder problemer!
Function TextConv(sText) Dim objRegExp Set objRegExp = New RegExp objRegExp.IgnoreCase = True objRegExp.Global = True objRegExp.Pattern = "<a href=""mailto:(.*?)"">(.*?)</a>" sText = objRegExp.Replace(sText, "###$1###$2###") Set objRegExp = Nothing TextConv = sText End Function
Jeg har tilføjet en parentes mere således at jeg også kan arbejde med $2 og jeg smider en stribe # ind for at teste.
Man bruger $1 når man skal lave en replace direkte i teksten ... ikke til at trække ud med på den viste måde. Det du viser vil nu heller ikke give dig hele _teksten_ ... f.eks. vil email adresse ikke mere være et link bagefter.
Hvis du vil have email addressen ud på noget i stil med den viste måde, så vil jeg indledningsvis spørge dig om hvad der så skal ske hvis der er mere end een email adresse i teksten?
ok - den måde jeg viser eksemplet på vil aldrig virke - det ser jeg nu. Alle email forekomster skal have samme behandling, det er mig der ikke er helt dus med hvordan RegExp fungere...
Jeg ville trække hver e-mail ud til senere behandling, men istedet kunne jeg lige så godt gøre det med det samme i funktionen - det kræver dog lidt mere regexp (tror jeg) fordi selve email adressen OGSÅ skal splittes op.
Ex. kunne være sText = objRegExp.Replace(sText,"<script language=""JavaScript""><!--"&_ " var name = ""$1"";"&_ " var domain = ""$2"";"&_ " document.write('<a href=\""mailto:' + name + '@' + domain + '\"">');"&_ " document.write('$3</a>');"&_ "// --></script>")
Hvor $1 email FØR @ $2 er domæne $3 er teksten imellem <a og </a>
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.