Bileşenleri içine Steet Adres Ayrıştırma

7 Cevap php

Herkes bileşenleri içine bir adres ayrıştırmak için bir php sınıfı veya regex var mı? En azından, bu bileşenler içine ayrılmalıyız: sokak bilgileri, eyalet, posta, ülke

7 Cevap

Bir kütüphane / dil agnostik çözüm için bu Google'ın geocoder kullanmak olacaktır. Verilen adrese hakkında ayrıntılı, kırık-aşağı bilgi dönebilirsiniz.

http://code.google.com/apis/maps/documentation/services.html#Geocoding%5FStructured

Eğer önceden varolan verileri, siz iyi bir şans bahsediyoruz eğer. Bu sizin için girişi üzerinde kontrole sahip bir şey varsa, ben giriş seviyesinde adres farklı bölgelerinden ayrılmasını oluşturmanızı öneririz. Jus 'bir öneri.

Edit: Use this just as an example, if your data is all formatted very similarly. As Strager pointed out, in most cases there will be too much variation in data to use a regex effectively.

Lütfen giriş biçimi olduğunu varsayarsak:

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

Bu regex hile yapacak:

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

Ama Düzenli İfadeler size önemli bir şey için kullanmak için gidiyoruz eğer, ben Regexes öğrenmek için zaman ayırdığınız öneririz ... oldukça karmaşıktır. Ben her zaman çok yararlı bu hile sayfasını bulduk:

http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/

İşte Python version using pyparsing sokak adresleri ayrıştırma içindir. PHP değil, ama size sorunun karmaşıklığı içine bazı anlayışlar verebilir.

Sorun kendilerini tüm şekil ve boyutlarda gelir ve kendi kendini doğrulayan varlıklar değildir adresleri olmasıdır. Online masaüstü tabanlı yazılım veya olacak - bu (ve o zaman bile hata eğilimli olabilir) elle adresini teftiş olmadan veya adres doğrulama yazılımı çeşit kullanarak doğru yaptım eğer gerçekten bilmek için hiçbir yolu yoktur anlamına gelir .

Bir adres almak ve kendi parçalarının içine kırmak ve sonuç geçerli olmak üzere onaylanmıştır güvenli bir şekilde yapabilirsiniz adres doğrulama web hizmetleri vardır.

Ben SmartyStreets kurucusu olduğumu belirtmeliyim. Biz ABD merkezli adresleri hakkında sordum yeteneklerini içerir doğrulama adresi yok. Ürünümüz bir address verification web service API olduğunu LiveAddress olduğunu.

Ben Polonya için tasarlanmıştır ancak bazı değişiklik ile başka işe yarayabilecek bir php adresi ayrıştırıcı buldum:

PHP address parser