Php 雷格斯德维德城酒店
我得到这些字符串: Prieelstraat 7-1730 Asse Meuleken 10-9961 Boekhoute Assenede 伯格梅斯特-维克鲁塞兰6-8500科特里克 第一个单词是街道的名称,但是街道的名称可以有多个单词,然后是数字house nr,然后是-然后是zipcode,zipcode之后是城市的名称 如何在PHP中执行此正则表达式Php 雷格斯德维德城酒店,php,regex,Php,Regex,我得到这些字符串: Prieelstraat 7-1730 Asse Meuleken 10-9961 Boekhoute Assenede 伯格梅斯特-维克鲁塞兰6-8500科特里克 第一个单词是街道的名称,但是街道的名称可以有多个单词,然后是数字house nr,然后是-然后是zipcode,zipcode之后是城市的名称 如何在PHP中执行此正则表达式 $address = 'Burgemeester Vercruysselaan 6 - 8500 Kortrijk'; $matches
$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+以下内容将填充$matches数组:
$matches[0] = full string
$matches[1] = street name
$matches[2] = house number
$matches[3] = zip code
$matches[4] = city
代码:
你只是想夺走这座城市?zipcode是否始终是数字的?我只想要地址-zipcode-城市,不需要房屋编号,这会导致问题,因为它有例如3a,所以不匹配d+,/^.*.-\d+\d+$/修复了它而不是。*?您可以尝试[\d\w]+只匹配字母和数字。两者都可以。
preg_match('/^(\D+) (\d+) - (\d+) (\D+)$/',$input, $matches);