Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 雷格斯德维德城酒店_Php_Regex - Fatal编程技术网

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

我得到这些字符串:

Prieelstraat 7-1730 Asse Meuleken 10-9961 Boekhoute Assenede 伯格梅斯特-维克鲁塞兰6-8500科特里克 第一个单词是街道的名称,但是街道的名称可以有多个单词,然后是数字house nr,然后是-然后是zipcode,zipcode之后是城市的名称

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

$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);