Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Boah Leute denkt doch mal ein bisschen praktisch, es geht hier doch nur um billige Telefonbucheinträge.
Wenn das Skript ein paar davon vergeigt ist das doch kein Beinbruch.
Mit ein bisschen XML parsen + Regex bekommt man das doch halbwegs ordentlich hin.
Wenn der Name nur aus einem Wort besteht, ist es einfach der Vorname. Punkt.
Ansonsten kann man den Namen z.B. damit splitten:
Code:
^(.+)\s+(?<!.*(van|von|prof|dr).*)(.+)$
Da das Skript ja anscheinend mehrmals auf den gleichen Datenbestand angewendet werden soll, könnte es evtl. auch gleich noch ne kleine (menschenlesbare) Lookup Table generieren, sodass man Fehler leicht ausbügeln kann:
So könnte man leicht nach Fehlern suchen und diese korrigieren. Beim nächsten Aufruf könnte das Skript dann die Korrekturen berücksichtigen.
----------
[ChAoZ schrieb:
] Nun stehst du vor dem Problem die Daten ordentlich in die DB zu übertragen.
In DE kein Problem. In FR muss man den String an der richtigen Position zerteilen.
- Berliner Allee 15
- Wiener Straße 1/2a-3a/4
- Mozartplatz 3a
- Alte Ricklinger Straße 59-61
- Wiener Straße 1/2
- Markt 16B1
- Straße des 17. Juni 28
Auch bei deinem Names-Regex scheitert er ziemlich. Selbst bei "John Doe" sind die Ergebnis zweideutig... und bei Park Chan-Wook scheiterts eben gnadenlos.
Also wenn ich das auf der Seite teste, dann klappts:
Straße (Gruppe 1): Straße des 17. Juni
Nummer (Gruppe 2): 28
Auch das sieht doch brauchbar aus:
Vorname (Gruppe 1): John
Nachname (Gruppe 3): Doe
Vorname (Gruppe 1): Park
Nachname (Gruppe 3): Chan-Wook
Wenn Vor- und Nachname vertauscht sind, hat man wenig Chancen.
Dafür ist ja dann der Vorschlag mit der Lookup Table (manuelle Prüfung) gedacht.
Edit: Ich hab nie behauptet, dass es in allen Fällen problemlos möglich ist die Namen zu splitten. Aber ich denke die "Trefferquote" reicht für die Problemstellung des TE.