Veröffentlicht 20. Oktober 201014 j wir bekommen über unsere mailserver mails mit anfragen herein wo auch die hoempages angegeben werden. ich möchte nun um das ganze für uns zu vereinfachen teile der mails in eine db haben. die mails kommen als txt und html an. auf den mailserver per imap zu kommen ist soweit auch kein problem, den ganzen mails suche ich dann nach Anfrage $mbox = imap_open( "{" . $mailserver . ":" . $port . "}INBOX", $user, $pass ) or die('Cannot connect to '.$mailserver.''.$user.': ' . imap_last_error());; //$message_count= imap_search($mbox , 'TEXT "Anfrage"'); $message_count = imap_num_msg($mbox); echo "$message_count Nachrichten in $mailserver $user " ; nun mein problem wie kann ich aus der mail die url die hinter der anfrage steht herraussuchen und in eine variable übergeben? das gleiche mit Name und Vorname bzw firma danach die nachricht löschen alle anderen mails die nicht anrage enthalten (meist spam) sollen direkt gelöscht werden
20. Oktober 201014 j Also je nachdem, wenn die URL immer an der gleichen Stelle steht, musst Du einfach mit Substr sie extrahieren. Ich denke aber, dass dies nicht der Fall ist, so dass Du eben nach eine URL im Text suchen musst, URLs beginnen meist mit http:// Für die Suche und das Extrahieren kannst Du reguläre Ausdrücke verwenden
20. Oktober 201014 j mit dieser funktion quäle ich mich grad aber diese gibt immer auch den restlichen text mit aus und nicht nur die url. ne leider steht es nicht immer an der gleichen possition in manchen mails sind auch 2 url drin diese müssen dann je nach endung in einortiert werden. function findUrl($u){ $url = $u[0]; $afterUrl = ''; // Zeichenkette am Ende der URL, die nicht zur URL gehört while(preg_match('#[[:punct:]]$#', $url, $found)){ $chr = $found[0]; // letztes Zeichen if($chr==='.' || $chr===',' || $chr==='!' || $chr==='?' || $chr===':' || $chr===';' || $chr==='>' || $chr==='<'){ // Ein Satzzeichen, das nicht zur URL gehört $afterUrl = $chr.$afterUrl; $url = substr($url, 0, -1); } elseif($chr===')' && strpos($url, '(')!==false || $chr===']' && strpos($url, '[')!==false || $chr==='}' && strpos($url, '{')!==false) break; // Klammer gehört nur zur URL, wenn auch öffnende Klammer vorkommt. elseif($chr===')' || $chr===']' || $chr==='}'){ // .. Klammer gehört nicht zur URL $afterUrl = $chr.$afterUrl; $url = substr($url, 0, -1); } elseif($chr==='(' || $chr==='[' || $chr==='{'){ // öffnende Klammer am Ende gehört nicht zur URL $afterUrl = $chr.$afterUrl; $url = substr($url, 0, -1); } else break; // Zeichen gehört zur URL } // URL mit HTML-Code zurückgeben return '<a href="'.$url.'" title="'.str_replace('http://', '', $url).'">'.$url.'</a>'; //return $Url; } $url = preg_replace_callback('#https?://[^/\s]{4,}(/[^\s]*)?#s', 'findUrl', $body);
20. Oktober 201014 j Bitte verwende Code-Tags, da jetzt der Code schon extrem unübersichtlich ist. Außerdem würde ich das Rad nicht neu erfinden PHP: preg_replace_callback - Manual außerdem würde ich eine Suchmaschine verwenden, um eine gültige RegExpr zu finden, die URL nach RFC auch findet und verarbeitet
20. Oktober 201014 j das mit den Code-Tags werde ich beachten.. suchmaschiene habe ich schon gefunden aber leider nicht den hinweis den ich brauche.. deswegen schreibe ich ja hier und frage
20. Oktober 201014 j weil du weist nach was du suchst... bin zu lang aus dem programieren raus.. gut aber die domain bzw den link im text zu markieren... macht es ja aber bei preg_replace_callback bekomme ich ja keine variable der domain als return sondern den text mit samt der domain oder nur den text ohne domain
20. Oktober 201014 j Du bekommst für den Regulären Ausdruck in die Callback Funktion ein Array, in dem Array stehen die entsprechenden Teile Deines Textes drin. Damit kannst Du dann entsprechend weiter arbeiten, d.h. Deine weitere Verarbeitung muss in den Callback Funktion mit den übergebenen Arraydaten durchgeführt werden
20. Oktober 201014 j ok die seite ist gut da , danke für den hinweis.. weist du vielleicht noch wie ich eine email (imap) auf dem server lösche bzw zum löschen markieren kann?
20. Oktober 201014 j weist du vielleicht noch wie ich eine email (imap) auf dem server lösche bzw zum löschen markieren kann? PHP: imap_delete - Manual
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.