Entwickler-Ecke
Internet / Netzwerk - E-Mails aus einem Quelltext herausfiltern !
Jagg - Fr 26.09.03 17:53
Titel: E-Mails aus einem Quelltext herausfiltern !
Hallo Leute !
Ich habe ein Programm geschrieben,das den Quelltext einer HTML-Seite anzeigt !
Jetzt will ich in dem Quelltext einen Suchvorgang starten,das nach allen E-Mails sucht und die dann in einem Memofeld ausgibt !
Wie kann ich sowas realisieren ???
Jagg !
MSCH - Fr 26.09.03 18:15
meinst du E-Mail adressen ? Wenn ja, einfach parsen nach @.
grez
msch
Jagg - Fr 26.09.03 18:59
Ja,ich meine E-Mail Adressen !
Nehmen wir mal an,ich habe das "@" gefunden,dann muss ich noch die Zeichen davor und danach suchen und die dann als vollstädige E-Mail Adresse ausgeben !
...aber es gibt ja die endungen ".de,.com,.net usw !
Wie filtere ich das heraus ???
Was muss noch beachtet werden bei der Richtigkeit einer E-Mail ???
Kann ich das alles mit der Funktion "Pos()" machen ???
Jagg !
Jagg - Fr 26.09.03 23:57
Danke für die Kürzel !
So,da wäre jetzt ein Problem mit Pos()
Code :
Quelltext
1:
| Suchstring := pos('@',Text); |
Beim 1.Durchgang suche ich dem
Text nach dem Zeichen
@......Das Zeichen
@ wird auch gefunden...
Beim 2. Durchgang wird das Zeichen
@ auch gefunden usw.
.....aber nach dem 1.Durchgang beginnt er mit der Suche
immer von vorne,so das immer eine Endlosschleife ensteht und ich nicht bis zum Ende des Textes suchen kann.
Kann man dieses Problem nur mit Pos() lösen oder geht das auch anders ???
Jagg !
Jagg - Sa 27.09.03 16:44
Diese Funktion,die ich brauche kann man vergleichen mit der Funktion "Weitersuchen" im FindDialog !
lemming - Di 30.09.03 09:03
Quelltext
1: 2: 3: 4: 5: 6:
| bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla fish@fish.com bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla hansi@fish.com bla bla bla bla bla bla schnarch.zapfen@gmx.de bla bla bla bla bla bla bla bla |
Und was stellen wir fest? Jede email Adresse ist mit @ zu finden.
Alles was vor dem @ kommt gehört zur email adresse bis ein leerzeichen kommt. Das gleiche gilt auch für was danach kommt.
So schwer ist das doch ned, oder?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.Button1Click(Sender: TObject); var iCipher: Integer; sChunk: String; iStart: Integer; iEnds: Integer; begin for iCipher := 0 To Length(Memo1.Text) - 1 do begin if Copy(Memo1.Text, iCipher, 1) = '@' then begin for iEnds := iCipher to (iCipher + 100) do begin if Copy(Memo1.Text, iEnds, 1) = ' ' then begin ShowMessage(IntToStr(iEnds - iCipher)); sChunk := Copy(Memo1.Text, iCipher, iEnds - iCipher); break; end; end;
for iStart := iCipher downto (iCipher - 100) do begin if Copy(Memo1.Text, iStart, 1) = ' ' then begin sChunk := Copy(Memo1.Text, iStart + 1, iCipher - (iStart + 1)) + sChunk; break; end; end;
Memo2.Lines.Add(sChunk); end; end; end; |
Eine noch leichtere methode wäre evtl. davon auszugehen das jedes Wort eine email Adresse ist und dann mit Pos() geprüft wird ob sie ein @ und einen . hat. Wenn beide True oder >0 ist dann ist es höchstwahrscheinlich eine email Adresse.
-lemmi
barfuesser - Di 30.09.03 09:45
| lemming hat folgendes geschrieben: |
Und was stellen wir fest? Jede email Adresse ist mit @ zu finden.
Alles was vor dem @ kommt gehört zur email adresse bis ein leerzeichen kommt. Das gleiche gilt auch für was danach kommt.
So schwer ist das doch ned, oder?
|
Wahrscheinlich doch:
Quelltext
1:
| <a href="mailto:addressee@domain.tld>Mail an mich</a> |
liefert dann als Ergebnis: href="mailto:addressee@domain.tld>Mail an mich</a>
barfuesser
lemming - Mi 01.10.03 14:24
Umso besser.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.Button1Click(Sender: TObject); var iCipher: Integer; sChunk: String; iStart: Integer; iEnds: Integer; begin for iCipher := 0 To Length(Memo1.Text) - 1 do begin if Copy(Memo1.Text, iCipher, 1) = '@' then begin for iEnds := iCipher to (iCipher + 100) do begin if Copy(Memo1.Text, iEnds, 1) = '"' then begin ShowMessage(IntToStr(iEnds - iCipher)); sChunk := Copy(Memo1.Text, iCipher, iEnds - iCipher); break; end; end;
for iStart := iCipher downto (iCipher - 100) do begin if Copy(Memo1.Text, iStart, 1) = ':' then begin sChunk := Copy(Memo1.Text, iStart + 1, iCipher - (iStart + 1)) + sChunk; break; end; end;
Memo2.Lines.Add(sChunk); end; end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!