регулярное выражение для адреса, если существует число

Вопрос: Я ищу php regex, чтобы разделить улицу и номер дома, но когда адрес не имеет номера дома, он должен указывать только название улицы. У меня есть это: /([^d]+)s?(.+)/i Он работает, но когда адрес не имеет номера дома, он разбивает последнюю букву с названия улицы. Это мой код: $result = mysqli_query($db, "SELECT street FROM branch;");

Вопрос:

Я ищу php regex, чтобы разделить улицу и номер дома, но когда адрес не имеет номера дома, он должен указывать только название улицы.

У меня есть это:

/([^d]+)s?(.+)/i

Он работает, но когда адрес не имеет номера дома, он разбивает последнюю букву с названия улицы.

Это мой код:

$result = mysqli_query($db, «SELECT street FROM branch;»); $row = mysqli_fetch_assoc(); while($row = mysqli_fetch_assoc($result)) { if ( preg_match(‘/([^d]+)s?(.+)/i’, $row[‘street’], $street) ) { $streetName = $street[1]; $streetNumber = $street[2]; echo $streetName; echo «<br />»; } }

Примеры адресов: UL.JANA PAWLA, UL.GDANSKA 83A, UL.MOSTOWA 5

Лучший ответ:

Я думаю, что вы пытаетесь сделать это:

Лаймы 45

будет выглядеть так:

Улица: Лаймы
Номер: 45

И ваша проблема в том, что если данные:

Только Гоблины

Ваш результат неверен.

Улица: Глобины
Номер: Улица

Поэтому: попробуйте это Regex:

s?([^d]+s)s?(d+.*)*

Что оно делает:

  • Если не число, забирающее все не-числовые значения в качестве первой группы (улицы)
  • Если после этой точки существует число, оно собирает число и все следующие символы в качестве второй группы.

Входы:

Лаймы

Выход:

Street: The Limes

Входы:

Лаймы 45

Выход:

Street: The Limes Number: 45

Входы:

Лаймы 45B

Выход:

Street: The Limes Number: 45B

Оцените статью
Добавить комментарий