Проверка адреса итальянской улицы с помощью PHP - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно проверить итальянский адрес, используя PHP и regex . Я должен написать это так:

Via/Corso (meaning street)/Viale (boulevard)/Piazza (square) [road] (,) [civic number], [city] ([abbreviation of province]).

Пример:

  • Via Garibaldi 374, Турин (TO)
  • Пьяцца Сан Пьетро, ​​325, Черветери (РМ)

В предыдущем посте я нашел решение для полного австралийского адреса, но я не знаю, как его изменить. Вот код и пример адреса, который считается действительным:

(ул. Гордон, 15, 3121 Креморн, Австралия)

if(!(preg_match('/^(?:\\d+ [a-zA-Z ]+, ){2}[a-zA-Z ]+$/', trim($_POST["via"])))){
    $via_err = "This street is invalid, insert #, Street name, Zip Code, City, Country.";
} else
    $via = trim($_POST["via"]);

Спасибо всем, кто может помочь мне с этой проблемой.

1 Ответ

0 голосов
/ 02 апреля 2019

Вы захотите сделать что-то подобное, просто запустите его с флагом i, чтобы сделать его нечувствительным к регистру:

(via|corso|viale|piazza) ([a-zA-Z ]+?),? (\d+), (\w+) \((\w+)\)

Основной хитрый момент - это первый переключатель, который немного запутан из-за того, сколько там типов улиц. Я только что заметил, что вам на самом деле не нужны группы, поэтому, кроме первого набора скобок, вы можете избавиться от них:

(via|corso|viale|piazza) [a-zA-Z ]+?,? \d+, \w+ \(\w+\)

Они не причинят вреда, даже если вы когда-нибудь захотите их извлечь.

...