reimario Geschrieben 5. Januar 2006 Geschrieben 5. Januar 2006 Hallo zusammen, ist es möglich fertige HTML-Dateien auszuwerten? Was ich genau meine ist, ich bekomme HTML-Dateien als Anhang in einer Email zugeschickt. Bestimmte Werte in dieser HTML-Datei bzw. in diesem HTML-Code möchte ich anhand von PHP auslesen und in eine DB schreiben... ist dies möglich??? Ich weiß, dass das Ganze über Formulare um einiges einfacher ist, aber die gegeben Vorraussetzungen lassen dies nicht zu. Dann noch eine Zusatzfrage für alle Crackzzzz Ist es mit PHP möglich, die Emails, die man bekommt, automatisch abzufangen und die Anlagen (s.o.) in einem Ordner auf einem Server zu hinterlegen... So, dass das Ganze automatiert ist und nicht jedesmal von einem Benutzer erst abgerufen werden muss und dann in den Ordner gespeichert werden muss... Ich hoffe ihr versteht mich... wenn nicht einfach fragen... Vielen Dank schon mal... Sven:confused: Zitieren
soeren Geschrieben 5. Januar 2006 Geschrieben 5. Januar 2006 Hi, ich kenne das, hab sowas ähnliches auch schon gemacht, nur bei mir waren's Word-Dateien. Also, um Mails abzurufen: <?php $config['mailbox'] = "mail.domain.de"; $config['type'] = "pop3"; $config['port'] = "110"; $config['username'] = "user"; $config['password'] = "pass"; $mailbox = "{".$config['mailbox']."/".$config['type'].":".$config['port']."}INBOX"; $username = $config['username']; $password = $config['password']; $mailbox = @imap_open($mailbox, $username, $password); [/PHP] Die Zugangsdaten etc. musst du natürlich anpassen. Dann prüfen, wieviele Mails im Postfach sind und mit 'ner Schleife abrufen: [PHP] $nMessages = @imap_num_msg($mailbox); for($i = 1; $i <= $nMessages; $i++) { Dann in jeder Mail mit 'ner weiteren Schleife alle Anhänge prüfen und in einem bestimmten Ordner speichern: $struktur = imap_fetchstructure($mailbox,$i); $attach['filename'] = $struktur->parts[1]->dparameters[0]->value; if ($attach['filename']!="") { $xc = count($struktur->parts)-1; $anr = 1; for ($xy=1;$xy<=$xc;$xy++) { $anr++; $filename = $struktur->parts[$xy]->dparameters[0]->value; $file = imap_base64(imap_fetchbody($mailbox,$i,$anr)); $data = @fopen("pfad/zum/ordner/".urldecode($filename)."",'w+'); @fputs($data, $file); @fclose($data); [/PHP] Zum Schluss Verbindung schliessen: [PHP] imap_expunge($mailbox); ?> Was das auslesen angeht: Sind die auszulesenden Werte innerhalb des Codes besonders gekennzeichnet, z.B. durch Kommentare, spezielle Tags etc. ? Oder wie willst du erkennen, was unnützer Code, text etc. ist und was die relevanten Werte sind ? Zitieren
reimario Geschrieben 5. Januar 2006 Autor Geschrieben 5. Januar 2006 Hey das ist ja Super... wäre nur gut wenn ich wüsste wo die ganzen for-Schleifen enden Das mit dem auslesen ist folgendermaßen: es handelt sich um ein Dokument, wo Werte in einer Tabelle angegeben sind...wenn man so will in Tags. Wenn jetzt zum Beispiel eine Zeile mit "PLZ: 12345" vorhanden ist, möchte ich den Wert 12345 in eine Datenbank haben... Im Quellcode von HTML würde das Ganze ja jetzt ungefähr so aussehen: <B> <FONT color=#000000> PLZ: </FONT> </B> <B> <FONT color=#800080> 64293 </FONT> </B> Jetzt müsste ich wissen wie man den Wert bekommt.... ABer vielen Dank schon mal!!! Zitieren
pelz Geschrieben 7. Januar 2006 Geschrieben 7. Januar 2006 Hey das ist ja Super... wäre nur gut wenn ich wüsste wo die ganzen for-Schleifen enden Mach einfach zwischen @fclose($data); und imap_expunge($mailbox); drei schließende geschweifte Klammern. if ist auch nicht geschlossen. Anhand der guten Kommentierung hättest Du das aber selbst herausfinden können. gruß vom pelz Zitieren
etreu Geschrieben 7. Januar 2006 Geschrieben 7. Januar 2006 Wenn jetzt zum Beispiel eine Zeile mit "PLZ: 12345" vorhanden ist, möchte ich den Wert 12345 in eine Datenbank haben... Im Quellcode von HTML würde das Ganze ja jetzt ungefähr so aussehen: <B> <FONT color=#000000> PLZ: </FONT> </B> <B> <FONT color=#800080> 64293 </FONT> </B> Jetzt müsste ich wissen wie man den Wert bekommt.... ABer vielen Dank schon mal!!! Das geht in etwa so: $pattern='§<B>\w*<FONT color=#000000>\w*PLZ:\w*</FONT>\w*</B>\w*<B>\w*<FONT color=#800080>\w*(\d{5})\*?</FONT>\w*</B>§'; $plzString = preg_replace($pattern, "\$1", $zeile); [/PHP] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.