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? Du kan väl loopa igenom texten och ifall strängen innehåller ett @ så sparar du ner strängen i databasen Sök på reguljära uttryck och e-post i forumet och/eller google. Tror det finns exempel på det sedan tidigare. Ofta har det ett prefix i texten. Men alltså... varför inte använda reguljära uttryck? har du tagit med punkter och bindestreck? <b>har du tagit med punkter och bindestreck?</b> Nu kan jag inte RegExp, men varför har du inte 0-9 med i första a-zA-Z? <b>Nu kan jag inte RegExp, men varför har du inte 0-9 med i första a-zA-Z?</b> 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%. så hur kopplar jag den funktionen till detta formulär, eller menar vart skall jag lägga request.form("rensa")? vilken skall jag ta för att det enklast skall fungera då?Sortera ut endast mailadresser och spara i databas
man kanske får göra det som nån slags loop för det är ganska många?Sv: Sortera ut endast mailadresser och spara i databas
Sv: Sortera ut endast mailadresser och spara i databas
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.
/DanielSv: Sortera ut endast mailadresser och spara i databas
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 !
/MartinSv:Sortera ut endast mailadresser och spara i databas
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>Sv: Sortera ut endast mailadresser och spara i databas
någon kan ju ha adressen:
anna-karin.dahl-andersson@fastighet.sparbanken.se
(fiktiv person och domän)Sv:Sortera ut endast mailadresser och spara i databas
Om frågan var menad till mig, så ja... det ser du väl i mitt mönster?Sv: Sortera ut endast mailadresser och spara i databas
ThomasSv:Sortera ut endast mailadresser och spara i databas
Av anledningen som Henrik nämnde. Nu kommenterade jag ju koden också med att det garanterat finns bättre mönster... ;)Sv: Sortera ut endast mailadresser och spara i databas
Koden finns på [Validera e-post adress]Sv:Sortera ut endast mailadresser och spara i databas
http://www.towork.se/test.aspSv: Sortera ut endast mailadresser och spara i databas