アドレスをコンポーネントに解析するためのphpクラスまたは正規表現を持っている人はいますか? 少なくとも、次のコンポーネントに分割する必要があります: ストリート情報、州、郵便番号、国
7 に答える
ライブラリ/言語に依存しないソリューションは、これにGoogleのジオコーダーを使用することです。特定のアドレスに関する詳細な内訳情報を返すことができます。
http://code.google.com/apis/maps/documentation/services.html#Geocoding_Structured
データがすべて非常に類似してフォーマットされている場合は、これを例として使用してください。Stragerが指摘したように、ほとんどの場合、正規表現を効果的に使用するにはデータのバリエーションが多すぎます。
入力が次の形式であると仮定します。
[Street Name], [State], [ZIP], [Country]
この正規表現はトリックを行います:
m/^(.+?),(.+?),([0-9]+),(.+)$/
しかし、正規表現はかなり複雑です。これを何か重要なことに使うつもりなら、時間をかけてそれらを学ぶことをお勧めします。私はいつも「正規表現のチートシート」がとても便利だと思っています。
あなたが既存のデータについて話しているなら、あなたがたに幸運を祈ります。これが入力を制御できるものである場合は、入力レベルでアドレスのさまざまな部分を分離することをお勧めします。ジュスの提案。
これは、番地の解析にpyparsing を使用するPython バージョンです。これは PHP ではありませんが、問題の複雑さについての洞察が得られるかもしれません。
問題は、アドレス自体がさまざまな形状とサイズで提供され、自己検証エンティティではないことです。これは、アドレスを手動で検査しない限り (また、エラーが発生しやすい場合もあります)、何らかのアドレス検証ソフトウェア (デスクトップベースのソフトウェアであれオンラインであれ) を使用せずに、正しく行ったかどうかを本当に知る方法がないことを意味します。 .
住所を受け取って構成要素に分解し、結果が有効であることが証明された安全な方法で分解できる住所検証 Web サービスは多数あります。
私は SmartyStreets の創設者です。米国を拠点とする住所について、お客様からお問い合わせがあった機能を含む住所確認を行います。当社の主力製品である US Address API は、住所検証 Web サービス APIです。