解析条目以获取邮政编码

时间:2011-11-27 19:04:58

标签: php regex zipcode

我有一张表格,有人可以在城市和州或邮政编码中输入。我正在尝试接受该条目并为其确定邮政编码,以便找到周围的邮政编码。有没有人有他们曾经做过的好逻辑?我想人们可以输入以下条目。

  • 芝加哥,il
  • chicago il
  • 60601
  • ST。 louis,mo
  • st louis,mo
  • st louis mo

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

4 个答案:

答案 0 :(得分:0)

您使用的是带zip-entrys的数据库吗?

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

答案 1 :(得分:0)

如果你想爆炸它,用空格替换所有换行符,用空格分解并迭代生成的数组,进行比较。

或按照Briedis的建议行事。 “搜索5位数字。 preg_match(“/(\ d {5})/”,$ str,$ matches);“

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

user1048676:

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

此问题可能在很大程度上取决于启发式

即:

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获取邮政编码?