【问题标题】:Parse an entry to get a zip code解析条目以获取邮政编码
【发布时间】:2011-11-27 19:04:58
【问题描述】:

我有一个表格,有人可以输入城市和州或邮政编码。我正在尝试获取该条目并为其确定邮政编码,以便找到周围的邮政编码。有没有人有他们曾经这样做过的任何好的逻辑?我认为人们可以输入以下条目。

  • 伊利诺伊州芝加哥
  • 芝加哥
  • 60601
  • 圣。路易斯,莫
  • 圣路易斯,莫
  • 圣路易斯莫

我正在考虑使用explode,但根据不同的条目,我不确定我能做到这一点。有任何想法吗?谢谢!

【问题讨论】:

  • 搜索 5 位数字。 preg_match("/(\d{5})/", $str, $matches);
  • 好的,但是如果这个人输入的是城市而不是邮政编码呢?

标签: php regex zipcode


【解决方案1】:

在我看来,更简单的方法是使用谷歌地理编码 api 并获取例如:http://maps.googleapis.com/maps/geo?q=st.%20louis%20mo&output=json 的内容(似乎 url 有一些东西的热链接保护,复制粘贴链接以查看实际输出)

您可以获取 json 格式的所有内容,或者如果您愿意,可以使用 xml - 并获取您需要的所有信息。

http://code.google.com/apis/maps/documentation/geocoding/

【讨论】:

  • 这看起来可行。我还需要将邮政编码存储在我的数据库中吗?我正在尝试选择已注册我的站点的区域中的位置,因此我认为我需要从 json 结果中获取名称,然后在我的数据库中查找邮政编码。然后在我的脚本中有一些东西可以找到他们输入的城市/邮政编码 15 英里内的所有邮政编码并从中选择我的用户??
  • 最好是保存它,是的,你对谷歌的调用越少越好。此外,由于您要检查某个半径内的邮政编码,以下链接可能对您很感兴趣 stackoverflow.com/questions/1246271/…sanisoft.com/phpziplocator
【解决方案2】:

您是否使用带有 zip 条目的数据库?

如果您使用的是数据库,则必须知道构建查询的字段和结构 - 或者您可以使用 API 来获取邮政编码。

【讨论】:

  • 我将拥有一个数据库,但显然需要正确构建我的查询。所以需要了解如何按城市查询。
【解决方案3】:

如果你想分解它,用空格替换所有换行符,用空格分解并遍历结果数组,比较。

或者按照布里迪斯的建议去做。 “搜索 5 个数字。 preg_match("/(\d{5})/", $str, $matches);"

【讨论】:

    【解决方案4】:

    用户1048676:

    您的邮政编码数据库的结构如何?

    这个问题可能很大程度上取决于启发式

    即:

    explode("\n", "chicago, il\nchicago il\n60601\nst. louis, mo\nst louis, mo\nst louis mo");
    foreach zip in zipcodes
        remove comma or any other characters
        try to parse as integer
        if parsed integer is in the range of zip codes, done
        else
            get last contentious word, and use that as the state, and the rest as the city, lookup
        endif
    endforeach 
    

    或者使用google map api获取邮编?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      相关资源
      最近更新 更多