Sortera ut endast mailadresser och spara i databas
Jag har en jätte text innehållande bland annat en massa e-post adresser, hur gör jag för att sortera ut endast de som följer mönstret för en e-mail adress ur en sträng, vill sortera ut dem ur texten och spara dem en och en i en databas?
man kanske får göra det som nån slags loop för det är ganska många?
Svara
Sv: Sortera ut endast mailadresser och spara i databas
Du kan väl loopa igenom texten och ifall strängen innehåller ett @ så sparar du ner strängen i databasen
Svara
Sv: Sortera ut endast mailadresser och spara i databas
Sök på reguljära uttryck och e-post i forumet och/eller google. Tror det finns exempel på det sedan tidigare.
Svara
Sv: Sortera ut endast mailadresser och spara i databas
varSplit = Split(text med alla email, " ")
For i = LBound(varSplit) To UBound(varSplit)
If isValidEmail(varsplit(i)) Then
'Spara varsplit(i) i databasen som en godkänd email.
end if
Next
Function IsValidEmail(Email)
ValidFlag = False
If (Email <> "") And (InStr(1, Email, "@") > 0) And (InStr(1, Email, ".") > 0) Then
atCount = 0
SpecialFlag = False
For atLoop = 1 To Len(Email)
atChr = Mid(Email, atLoop, 1)
If atChr = "@" Then atCount = atCount + 1
If (atChr >= Chr(32)) And (atChr <= Chr(44)) Then SpecialFlag = True
If (atChr = Chr(47)) Or (atChr = Chr(96)) Or (atChr >= Chr(123)) Then SpecialFlag = True
If (atChr >= Chr(58)) And (atChr <= Chr(63)) Then SpecialFlag = True
If (atChr >= Chr(91)) And (atChr <= Chr(94)) Then SpecialFlag = True
Next
If (atCount = 1) And (SpecialFlag = False) Then
BadFlag = False
tAry1 = Split(Email, "@")
UserName = tAry1(0)
DomainName = tAry1(1)
If (UserName = "") Or (DomainName = "") Then BadFlag = True
If Mid(DomainName, 1, 1) = "." then BadFlag = True
If Mid(DomainName, Len(DomainName), 1) = "." then BadFlag = True
ValidFlag = True
End If
End If
If BadFlag = True Then ValidFlag = False
IsValidEmail = ValidFlag
End Function
Kolla om den här passar ditt ändamål.
/Daniel
Svara
Sv: Sortera ut endast mailadresser och spara i databas
Ofta har det ett prefix i texten.
I mitt fall "&E="
Och suffix "&HA1".
Eftersom det är sällan det endast är adressen som finns i strängen hjälper det ju inte att söka på "@".
Här är ett exempel :
StartPos=1
While StartPos > 0
Text1.Text = UCase(Text1.Text)
StartPos = InStr(StrPos, Text1.Text, "&E=")
If StartPos > 1 Then
EndPos = InStr(StartPos, Text1.Text, "&HA1")
StrPos = EndPos
Emailaddr = LCase(Mid(Text1, StartPos + 3, (EndPos) - (StartPos + 3)))
List1.AddItem (Emailaddr)
Data1.RecordSource = "Select * from Mailaddress where Mailaddress='" & Emailaddr & "'"
Data1.Refresh
If Data1.Recordset.EOF Then
Data1.Recordset.AddNew
Data1.Recordset!Mailaddress = Emailaddr
Data1.Recordset.Update
End If
End If
Wend
Jag har inte tagit med deklarationer etc.
Förutsättningen är att du mellanlagrar hela textmassan i text1.text.
Lycka till !
/Martin
Svara
Sv:Sortera ut endast mailadresser och spara i databas
Men alltså... varför inte använda reguljära uttryck?
Borde inte t ex detta funka?
<code>
Set re = New RegExp
re.IgnoreCase = true
re.Global = true
' Definiera mönster... finns garanterat något bättre för e-postadresser...
re.Pattern = "^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@" &_
"[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\." &_
"[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"
Set matches = re.Execute(texten)
For Each Item in matches
' Gör nåt med träffarna, t.ex skriv ut...
Response.Write(Item.Value)
Next
</code>
Svara
Sv: Sortera ut endast mailadresser och spara i databas
har du tagit med punkter och bindestreck?
någon kan ju ha adressen:
anna-karin.dahl-andersson@fastighet.sparbanken.se
(fiktiv person och domän)
Svara
Sv:Sortera ut endast mailadresser och spara i databas
<b>har du tagit med punkter och bindestreck?</b>
Om frågan var menad till mig, så ja... det ser du väl i mitt mönster?
Svara
Sv: Sortera ut endast mailadresser och spara i databas
Nu kan jag inte RegExp, men varför har du inte 0-9 med i första a-zA-Z?
Thomas
Svara
Sv:Sortera ut endast mailadresser och spara i databas
<b>Nu kan jag inte RegExp, men varför har du inte 0-9 med i första a-zA-Z?</b>
Av anledningen som Henrik nämnde. Nu kommenterade jag ju koden också med att det garanterat finns bättre mönster... ;)
Svara
Sv: Sortera ut endast mailadresser och spara i databas
Jag har lagt upp ett tips på hur man kan validera en e-post adress, och mönstret i funktionen borde följa RFC standarden, men detta kan jag inte garantera till 100%.
Koden finns på [Validera e-post adress]
Svara
Sv:Sortera ut endast mailadresser och spara i databas
så hur kopplar jag den funktionen till detta formulär, eller menar vart skall jag lägga request.form("rensa")?
http://www.towork.se/test.asp
Svara
Sv: Sortera ut endast mailadresser och spara i databas
vilken skall jag ta för att det enklast skall fungera då?
Svara