正则表达式的城市

时间:2011-12-01 22:26:51

标签: php regex

我得到这些字符串:

  • Prieelstraat 7 - 1730 Asse
  • Meuleken 10 - 9961 Boekhoute(Assenede)
  • Burgemeester Vercruysselaan 6 - 8500 Kortrijk

第一个单词是街道的名称,但是街道的名称可以有多个单词,然后是数字(house nr),然后是 - 然后是zipcode,之后是zipcode的名称城市。

如何在PHP中执行此正则表达式?

2 个答案:

答案 0 :(得分:3)

$address = 'Burgemeester Vercruysselaan 6 - 8500 Kortrijk';

$matches = array();
preg_match('/^(\D+)\s*(\d+)\s*-\s*(\d+)\s*(.*)$/', $address, $matches);

print_r($matches);

/* output:

Array
(
    [0] => Burgemeester Vercruysselaan 6 - 8500 Kortrijk
    [1] => Burgemeester Vercruysselaan 
    [2] => 6
    [3] => 8500
    [4] => Kortrijk
)

*/

如果邮政编码可以包含数字,字母和短划线,请更改最后一个:

(\d+)\s*

为:

([0-9A-Za-z-]+)\s+

答案 1 :(得分:1)

以下内容将使用以下内容填充$ matches数组:

$matches[0] = full string
$matches[1] = street name
$matches[2] = house number
$matches[3] = zip code
$matches[4] = city

代码:

preg_match('/^(\D+) (\d+) - (\d+) (\D+)$/',$input, $matches);