preg_match_all来制作街道地址数组

时间:2015-05-07 21:59:55

标签: php arrays regex preg-match

我需要将街道地址的部分捕获到php变量中。我使用preg_match_all的大部分方式,但我可以使用正则表达式部分的一些帮助:

$address[0] = '2033 2nd Avenue, Seattle, WA 98121';

preg_match_all("/(\w*)+/", $address[0], $first_address);

// get rid of the empty bits
$first_address = array_filter(array_map('array_filter',$first_address));

print_r($first_address)

// results
Array
(
    [0] => Array
        (
            [0] => 2033
            [2] => 2nd
            [4] => Avenue
            [7] => Seattle
            [10] => WA
            [12] => 98121
      )
  )

我可以使用像$first_address[0][4]这样的语法来访问这些部分,但是我不能依赖表示地址部分相同的数组编号(有时会省略逗号)。

如果我能够生成一个命名部件的关联数组,那么理想的是什么:

Array
(
    [0] => Array
        (
            [hsn]    => 2033
            [street] => 2nd
            [suffix] => Avenue
            [city]   => Seattle
            [state]  => WA
            [zip]    => 98121
      )
  )

有没有人有更好的方法呢?

0 个答案:

没有答案