Autor |
Beitrag |
Steven
      
Beiträge: 57
|
Verfasst: Di 24.06.03 18:45
hallo ich muss folgenden string (kommt öfters vor)
Quelltext 1:
| <a href="mailto:name@domain.de">name@domain.de</a> |
aus einer html-datei herausfiltern weil ich diese austauschen muss.
das will mir mit dem code unter aber nicht ganz glücken, schwierigkeiten machen irgendwelche tags z.b. <br>usw.... die am ende dranhängen und die ich einfach nicht rausgefiltert kriege.
nein, ich will mir keinen spider bauen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| for i := 0 to Memo4.Lines.Count - 1 do begin if Pos('<a href="mailto:', Memo4.Lines.Strings[i]) > 0 then begin s := ''; for p := Pos('<a href="mailto:', Memo4.Lines.Strings[i]) to Length(Memo4.Lines.Strings[i]) do if Memo4.Lines.Strings[i][p] <> '</a>' then s := s + Memo4.Lines.Strings[i][p] else break; Memo5.lines.Add(s); end; end; end; |
Moderiert von Tino: Titel geändert & Topic verschoben.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 20:11
Eventuell ist ja StringReplace was für dich.
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 20:16
dachte ich auch schon...nur weiß ich aber nie so genau was nach dem letzten </a> kommt ...
hast du ne idee wie ich das machen könnte?
eigendlich müßte nach dem </a> ein neuer tag beginnen.
wenn ich alle html-tags replace, sind ja auch die tags weg die ich behalten will, hmm.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 20:20
Du willst doch nur die E-Mail-Adresse ersetzten. Laß doch die Tags in Ruhe die haben damit doch gar nichts am Hut.
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 20:22
nein...das stimmt nicht ich muss dieses mailto auch austauschen, mein mailto setzt sich aus javascript zusammen, deshalb
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 20:50
Steven hat folgendes geschrieben: | mein mailto setzt sich aus javascript zusammen, deshalb |
Wie sieht das aus?
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 20:56
Quelltext 1: 2: 3: 4:
| <script language="javascript"> document.write("<a href=\"mailto:") document.write("info@web.de\">info@web.de<\/a>") </script> |
so siehts aus...
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 24.06.03 20:58
Das kommt doch auf exact das gleiche raus ob du das machst oder direkt den <a>-Tag änderst...
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 21:02
ich brauche ja nur das mailto:info@web.de zu replacen aber mir ist nicht ganz klar wie ich das machen kann weil nach dem
<a href="mailto;info@web.de">info@web.de</a>
ja wieder ein tag kommt und ich weiss auch nicht welche emailadressen vorkommen... wenn ich die emaiadresse weiß, dann funktioniert das ja so:
Delphi-Quelltext 1:
| Memo4.text:=Stringreplace(Memo4.text,'<a href="mailto;info@web.de">info@web.de</a>',''+neu.text+'',[rfReplaceAll]); |
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 21:14
Zuletzt bearbeitet von Luckie am Di 24.06.03 21:19, insgesamt 1-mal bearbeitet
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 21:17
aber wenn ich die emailadreesen vorher doch nicht kenne!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 21:20
Aber wenn du sie ersetzen willst, muß du sie ja irgendwann kennen, sonst kannst du nichts ersetzen.
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 21:23
schau dir bitte mein erstes posting in diesem thread an.
damit habe ich versucht die mailto's auszulesen (sozusagen "kennenzulernen")
und in der reihenfolge wie sie ausgelesen werden auch wieder zu ersetzen...
zumindestens war das mein ansatz
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 21:42
Moment. Ich darf mal kurz gedanklich nachvollziehen, was du da vor hast.
Die Adressen stehen so im Text:
mpuff@luckie-online.de
foo@luckie-online.de
bar@luckie-online.de
In der Reihenfolge und noch mit dem ganzen HTML-Gedönse drumrum.
Jetzt extrahierst du sie aus dem Text und hast sie dann wegen mir in einer Stringliste stehen.
Und jetzt, und jetzt hapert es bei mir etwas, was du jetzt vor hast. Jetzt willst du eine dir bekannte E-Mail Adresse mit den extrahierten ersetzen? Was bedeutet "in dieser Reihenfolge"?
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 21:54
Zitat: | Jetzt extrahierst du sie aus dem Text und hast sie dann wegen mir in einer Stringliste stehen. |
genau das ist der punkt an dem ich nicht weiter komme.
bei mir hängen immer noch irgendwelche tags oder so'n müll dran.
Zitat: | Jetzt willst du eine dir bekannte E-Mail Adresse mit den extrahierten ersetzen? Was bedeutet "in dieser Reihenfolge"? |
1 mpuff@luckie-online.de
2 foo@luckie-online.de
3 bar@luckie-online.de
ja, sollen halt wieder an der gleichen stelle stehen, nicht vertauscht ...
eigendlich soll alles so bleiben wie es ist, nur das
Quelltext 1:
| <a href="mailto:mpuff@luckie-online.de ">mpuff@luckie-online.de </a> |
soll durch:
Quelltext 1: 2: 3: 4:
| <script language="javascript"> document.write("<a href=\"mailto:") document.write("mpuff@luckie-online.de \">mpuff@luckie-online.de <\/a>") </script> | ersetzt werden...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 21:58
Dann mach es doch so:
alter String: <a href="mailto:mpuff@luckie-online.de ">mpuff@luckie-online.de </a>
neuer String: <script language="javascript">
document.write("<a href=\"mailto:")
document.write("mpuff@luckie-online.de \">mpuff@luckie-online.de <\/a>")
</script>
Und das ganze mit StringReplace.
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Di 24.06.03 22:03
ok...ist klar
damit ist aber nicht meine frage beantwortet, was wenn es verschiedene emailadressen sind?
drücke ich mich so undeutlich aus....? 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 25.06.03 00:33
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 GetEMails(s: String; sl: TStrings); var MailAddy: String; p: PChar; Start: PChar; begin p := PChar(s); while p^ <> #0 do begin if p^ = #64 then begin while (p^ <> #32) and (p^ <> #13) and (p^ <> #10) do Dec(p); Start := p+1; p := p+1; while (p^ <> #32) do Inc(p); SetString(MailAddy, Start, p-Start); sl.Add(MailAddy); end; Inc(p); end; end;
procedure TForm1.FormCreate(Sender: TObject); begin GetEMails(Memo1.Text, Listbox1.Items); end; |
Probier es mal damit. Das holt dir alle E-Mail Adresse aus einem Text raus. Du mußt es nur etwas anpassen. Wenn ein @ gefunden wurde mußt du nicht bis zum ersten Leerzeichen zurückgehen, sondern bis zum nächsten ":". Und dann auch wieder nicht bis zum nächsten Leerzeichen nach vorne gehen, sondern bis zum nächsten " " ".
Über geben kannst du alternativ zu Listbox1.Items auch eine Stringliste.
So, ich hoffe jetzt konnte ich dir helfen. 
|
|
Steven 
      
Beiträge: 57
|
Verfasst: Mi 25.06.03 07:59
vielen dank für deine bemühungen mir helfen zu wollen,
leider kommt nun doch ein "ABER"...
dein code macht die gleichen "fehler" wie mein erster.
was wenn keine leerzeichen da sind? 
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 25.06.03 08:31
Steven hat folgendes geschrieben: | dein code macht die gleichen "fehler" wie mein erster. |
Und funktioniert auch nicht bei Email-Adressen wie dieser hier:
Quelltext 1: 2: 3:
| <a href="mailto:mpuff%40 ..."> Michael </a> |
@Steven: Du solltest dir diesen Beitrag vielleicht mal ansehen.
|
|