3 Stimmen

Eine Straßenadresse in Komponenten zerlegen

Hat jemand eine PHP-Klasse, oder Regex, um eine Adresse in Komponenten zu parsen? Zumindest sollte sie in diese Komponenten zerlegt werden: Straße, Bundesland, Postleitzahl, Land

1 Stimmen

stackoverflow.com/q/11160192/128421 befasst sich mit diesem Thema.

7voto

Samantha Branham Punkte 7220

Eine bibliotheks- und sprachunabhängige Lösung wäre die Verwendung von Googles Geocoder für diesen Zweck. Er kann detaillierte, aufgeschlüsselte Informationen über eine bestimmte Adresse liefern.

http://code.google.com/apis/maps/documentation/services.html#Geocoding_Structured

0 Stimmen

+1 Sieht nach einer guten Ressource aus. Bedenken Sie jedoch, dass es die Verarbeitung von -teilweisen- Adressen zulässt, d. h., wenn Sie nur das Land und den Staat angeben, kann es mit dieser Art von Teilinformationen auskommen, wohingegen, wenn Sie eine Anwendung erstellen, die später Postadressen verwenden muss, diese Art von offener Erlaubnis sich als Nachteil erweisen kann. zuckt mit den Schultern

0 Stimmen

Könnten Sie nicht einfach gegen die Ergebnisse des Parsens validieren? Das heißt, wenn es Ihnen nichts ausmacht, dass Sie möglicherweise viel mit Google zu tun haben.

0 Stimmen

Es gibt Grenzen, wenn Sie eine große Liste haben, dann müssen Sie für Google Geocode bezahlen... es gibt billigere Lösungen wie heremaps oder bing maps für Massen.

3voto

Vlad the Impala Punkte 14862

Verwenden Sie dies nur als Beispiel, wenn Ihre Daten alle sehr ähnlich formatiert sind. Wie Strager bereits sagte, gibt es in den meisten Fällen zu viele Unterschiede in den Daten, um eine Regex effektiv zu verwenden.

Angenommen, Ihre Eingabe hat das Format:

[Street Name], [State], [ZIP], [Country]

Diese Regex erfüllt den Zweck:

m/^(.+?),(.+?),([0-9]+),(.+)$/

Aber reguläre Ausdrücke sind ziemlich komplex. Wenn Sie sie für irgendetwas Wichtiges verwenden wollen, sollten Sie sich die Zeit nehmen, sie zu lernen. Ich habe immer die " Spickzettel für reguläre Ausdrücke " sehr nützlich.

5 Stimmen

Aufgrund der vielen möglichen Formen für Adressen halte ich einen regulären Ausdruck für nicht praktikabel.

0 Stimmen

+1 für die Regex Spickzettel, nützlich, obwohl ich nicht glaube, dass Regex wird eine große Lösung für ein offenes Adressfeld sein.

2voto

Kzqai Punkte 21863

Wenn Sie von bereits vorhandenen Daten sprechen, wünsche ich Ihnen viel Glück. Wenn es sich um etwas handelt, bei dem Sie die Kontrolle über die Eingabe haben, empfehle ich, die verschiedenen Teile der Adresse auf der Eingabeebene zu trennen. Das ist nur ein Vorschlag.

0 Stimmen

Ich habe versucht, die Schnittstelle so einfach wie möglich zu halten. Ich wollte den Benutzern die Möglichkeit geben, die Adresse einfach in ein Textfeld einzugeben, und ich würde später versuchen, sie zu analysieren.

2 Stimmen

Denken Sie daran, dass Sie mit einem offenen Feld die Komplexität erhöhen, weil Sie keine strengen Anforderungen an die Eingabe stellen, so dass die Benutzer Informationen in Formaten eingeben, die Sie nicht analysieren können. Besser ist es, getrennte Felder bereitzustellen und dann ein Feld für "andere Adressinformationen" für Adressen, die nicht in Ihr Muster passen, einzurichten.

1voto

PaulMcG Punkte 59178

Hier ist ein Python-Version mit pyparsing für das Parsen von Straßenadressen. Es ist nicht PHP, aber es könnte Ihnen einen Einblick in die Komplexität des Problems geben.

1voto

Jonathan Oliver Punkte 5079

Das Problem ist, dass es Adressen in allen Formen und Größen gibt und sie sich nicht selbst bestätigen. Das bedeutet, dass es keine Möglichkeit gibt, wirklich zu wissen, ob man es richtig gemacht hat, ohne die Adresse von Hand zu prüfen (und selbst dann kann es fehleranfällig sein) oder eine Art von Software zur Adressüberprüfung zu verwenden - sei es eine desktopbasierte Software oder eine Online-Software.

Es gibt eine Reihe von Webdiensten zur Adressüberprüfung, die eine Adresse in ihre Bestandteile zerlegen können und dies auf sichere Weise tun, wobei die Ergebnisse als gültig zertifiziert sind.

Ich sollte erwähnen, dass ich der Gründer von SmartyStreets bin. Wir bieten Adressverifizierung an, die die von Ihnen angesprochenen Funktionen für US-Adressen umfasst. Unser Vorzeigeprodukt ist die US Address API, eine Webdienst zur Adressüberprüfung API .

0 Stimmen

So gut sich dieses kommerzielle SmartyStreets-Angebot auch anhört, seien Sie vorsichtig - es gilt nur für die USA.

0 Stimmen

Direkt auf unserer Homepage steht in großen Lettern "USPS address validation". Hier ist unsere FAQ-Seite darüber: smartystreets.com/kb/faq/do-you-verify-international-addresses Hier die Ergebnisse von Google bei der Suche nach "Vereinigte Staaten" google.com/search?q=site%3Asmartystreets.com+united+states

0 Stimmen

Fairerweise muss ich sagen, dass ich meinen Kommentar auf disqus gelöscht habe, aber das Argument bleibt bestehen, dass SStreets aufgrund dieser Einschränkung nur eine Teillösung für das allgemeine Problem der Adressüberprüfung ist, das in dieser Frage angesprochen wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X