Geschafft!

Hinweis

Fehler

Session expiration Your session is going to expireClick here to extend

Budget:

Kleines Projekt <800

Geposted am

04.04.14 17:54

Kunde

CUB***

Die Angebotsphase ist beendet

Schreiben Sie ein ähnliches Projekt aus und erhalten Sie Angebote von Freelancern. Unverbindlich. Kostenlos. Schnell.

Jetzt ähnliches Projekt einstellen

Beschreibung:

Dieser Auftrag erfordert Basiskenntnisse in PHP und kann für einen Azubi oder Praktikanten eine tolle Aufgabe sein, oder für einen Profi eine Herausforderung, diese mit einem Klacks umzusetzen :-)

Es soll ein PHP Skript erstellt werden, dem per Copy und Paste die Signatur aus einer Email (Kontaktdaten) übergeben werden. Das Skript versucht dann, entsprechend der unten aufgeführten Logik, den übergeben Text in Felder aufzusplitten, die von uns anhand von $variablen weiter verarbeitet werden können. Das spart uns den Zeitaufwand jedes einzelne Feld (z.B. Vorname, Nachname, Hausnummer, etc.), mit seperatem Copy&Paste in die Eingabemaske einzufügen.

Umsetzungskonzept:

A: Nominierung 1a. Der Text wird zunächst in Zeilen aufgesplittet um jede Zeile untersuchen zu können 2a. Von oben nach unten wird nach den Keywords der Grußformel gesucht: Text bis zu dieser Zeile wird ignoriert 3a. Die nachfolgenden Zeilen werden mit den Keywordlisten verglichen und bei einem Treffer nominiert (z.B. durch die Liste der Firmierungen (gmbh, kg, ag) wird eine Zeile "Müller KG" als Firma nominiert -->  $firmenname = "Müller KG";)

B: Komplettaufbereitung Die verbleibenden Zeilen, die nicht durch Listen abgeglichen wurden, bzw. in denen nichts gefunden wurde müssen dann plausibel verarbeitet werden: 1b. Wird ein Bindestrich im Vornamen gefunden, so werden beide Teile mit der Vornamenliste abgeglichen und bei einem Treffer als Vorname nominiert z.B. Hans-Peter --> Vorname Hans oder Vorname Peter ==> Vorname! 2b. Alles was entweder vor oder hinter dem Vornamen steht, gilt als Nachnahme (z.B. "Schmidt-Jürgens, Hans-Peter" --> $nachname = "Schmidt-Jürgens";) gilt als Nachname und Kommas/Zeichen werden entfernt   3b. Wenn vor oder nach der Position Zeilen während der Norminierung nicht zugeordnet werden konnten ist anzunehmen, dass der Text zur Positions gehört: Bsp. Abteilung Küchenservice \n Manager Service & Support" -> In der zweiten Zeile wird "Manager" als Position-Keyword gefunden, die erste (+ evtl. nachfolgende undefinierbare Zeile) wird als Position mit aufgefasst und (durch Komma getrennt) angehängt -> $position = "Manager Service & Support, Abteilung Küchenservice" 4b. Der Titel wird Zeilenweise durch Befunde aus der Titelliste festgelegt (keine Nominierung) "Dip.-Ing. (FH) Elektrotechnik" Treffer: "ing" --> $titel = "Dip.-Ing. (FH) Elektrotechnik"; 5b. Firmenname auch Zeilenweise wie beim Titel durch Befunde aus der Firmierung 6b. Straße wird durch Straßenname nominiert, eine Zahl ganz am Ende oder am Anfang als Hausnummer z.B. "2343 Hammer Drive, Appartment 32b" --> Hausnummer wird "32b", da am Ende in Deutschland wahrscheinlicher ist (eine Berücksichtigung des Landes soll später erst implementiert werden um solche US Straßennamen gesondert zu behandeln) 7b. In einer der Zeilen, die nach dem Straßennamen folgen, wird die Stadt/Ort per Definition erwartet - Die Zeilen da zwischen werden als Adresszusatz (mit Komma getrennt) aufgefasst 8b. Der Ort/Stadt wird mit Keywordliste abgeglichen, falls nichts gefunden wird, kann im nächsten Schritt eine undefinierte Zeile nominiert werden, die einen seperaten String am Anfang oder Ende aufweist, der zwischen 3 und 8 Zeichen breit ist und über mind. 1 Ziffer verfügt! 9b. Die erwartete Erscheinung PLZ wird in 8b definiert und befindet sich per Definition in der gleichen Zeile wie die Stadt 10b. Für Telefon... 11b. Mobiltelefon... 12b. und Fax werden Listen mit Keywords abgeglichen, wobei der Wert auch 1 Zeile später stehen darf z.B. "Telefon \n (+49)030/5548-5542" --> $telefon = "(+49)030/5548-5542"; 13b. Email Adressen müssen ein @ Zeichen haben. Bei mehreren Email wird die mit dem längsten String vor dem @ verwendet: z.B. "Allgemein: [OBSCURED] \n Persönlich: [OBSCURED]" --> $email = "[OBSCURED]" (wir gehen per Definition davon aus, dass persönliche Email Adressen i.d.R. länger sind z.B. [ Max.Mustermann >> info ] ) 14b. Webadressen werden anhand der Domainendung erkannt und beinhalten per Definition kein @ Zeichen. 15b. Social Media Links werden anhand der URL (facebook.com, linkedin.com, xing.de, xing.com ) interpretiert und als Multiarray (anhand des Eintrags der Abgleichliste) ausgegeben: $social[facebook.com] = "http://facebook.com/mmustermann";

C: Auswertung Im letzten Teil werden die nominierten Treffer ausgewertet. Wurden mehrere Möglichkeit für die gesuchten Felder gefunden bzw. viele Felder undefiniert übrig bleiben, kann hier folgende Logik als Ansatz genommen werden, der sich im Laufe der Nutzung an dieser Stelle noch optimieren lässt: 1c. Name wird per Definition erwartet, falls nichts gefunden wurde, wird die Zeile ganz oben (nach Grußformel) genutzt 2c. Unbekannte Zeilen nach Name werden zur Postition definiert 3c. Telefonnummer, Faxnummer und Mobilnummer sind aufeinander folgende Zeilen (in beliebiger Reihenfolge) 4c. Straße / Hausnummer und Stadt / PLZ sind aufeinander folgende Zeilen (in dieser Reihenfolge) 6c. Die nicht zugeordneten Felder aus Buchstaben "Titel", "Berufsbezeichnung", "Straße", "Stadt", "Firmenname" werden in dieser Reihenfolge erraten (einfach angenommen) 7c. Die nicht zugeordneten Felder aus Zahlen "Hausnummer", "PLZ", "Tel", "Fax", "Handy" werden in dieser Reihenfolge erraten (einfach angenommen) 8c. Weitere Texte die nicht zuzuordnen werden konnten, werden als $note (mit \n getrennt) übergeben

HTML Emails werden als Text eingelesen und sämtliche Tags werden ignoriert. Die Schnittstelle --> $signatur besteht aus reinem Text mit \n Eine erfolgreiche Erkennung bei Nutzung von Spalten (Tabellen in HTML oder Texteinrückung) muss nicht mehr gegeben sein, da das das Skript sehr komplex werden lassen würde. Vor Beginn der Implementierung möchten wir eine Beschreibung zur Umsetzung bestätigen, in der die zu erwartenden Klassen/Funktionen sowie des Aufbau des Skripts vereinbart wird, da der Code für eine spätere Erweiterung verständlich bleiben muss. Alle Abgleichslisten werden als "z.B. liste_vornamen.txt" nach Auftragsvergabe zur Verfügung gestellt und sollen in Originalform vom Skript (ohne DB) verwendet werden. Die Werte sind in kleinschreibung mit \n getrennt.