<?php
$re = '~^(?<address>(?<streetname>\h*\S.*?)\h*(?<housenumber>\d+\h*[A-Za-z]?))(?:/(?<stairs>\d+)(?=(?:/\d+){1,2}))?(?:/(?<floor>\d)(?=(?:/\d+)))?(?:/(?<door>\d+))?$~m';
$strings = [
"Lilienstr. 12a",
"Leibnizstraße 36/28/2",
"Prager Straße 14/3/1/4",
"Guentherstr. 43 B",
"Eberhard-Leibnitz Str. 1/7",
"Schießstätte 7/7"
];
foreach ($strings as $string) {
preg_match_all($re, $string, $matches, PREG_SET_ORDER);
$address = array_filter($matches[0], "is_string", ARRAY_FILTER_USE_KEY);
print_r($address);
}
preferences:
103.69 ms | 406 KiB | 5 Q