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 !


focus - Fr 26.09.03 19:34

die kürzel sind vordefiniert [http://www.rtb-nord.uni-hannover.de/buecher/inet/all-inet-a1.html], danach lässt sich suchen, und vor dem @ suchst du einfach das letzte leerzeichen ach und vor dem kürzel muss ein "." sein
ja mit pos lässt sich da gut arbeiten
gruss
michael


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 + 100do
      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 - 100do
      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 + 100do 
      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 - 100do 
      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;