Для поиска адресов, в которых отсутствует определенная часть, можно использовать функцию preg_match в PHP с помощью регулярного выражения.
Перед тем как приступить к написанию регулярного выражения, определимся, что мы будем считать адресом. В данном случае, предположим, что адрес будет состоять из четырех частей: улицы, номера дома, города и почтового индекса.
Итак, для поиска адресов, в которых отсутствует часть, мы можем использовать отрицательные lookaheads. Это позволяет утверждать, что указанная часть отсутствует, при этом не включая ее в совпадение.
Вот регулярное выражение, которое позволит найти адреса, в которых отсутствует часть:
$pattern = '/^(?!.*улица)(?=.*дом)(?=.*город)(?=.*индекс).*$/';
Обратите внимание на использование оператора "?!". Он указывает на отрицательный lookahead, что означает, что выражение в скобках не должно присутствовать в строке после текущей позиции.
Используем этот паттерн с функцией preg_match:
$address1 = "улица 123, город, 123456"; $address2 = "улица, дом 123, город, 123456"; if (preg_match($pattern, $address1)) { echo "Адрес 1 соответствует критерию"; } else { echo "Адрес 1 НЕ соответствует критерию"; } if (preg_match($pattern, $address2)) { echo "Адрес 2 соответствует критерию"; } else { echo "Адрес 2 НЕ соответствует критерию"; }
В результате выполнения кода мы получим следующий результат:
Адрес 1 НЕ соответствует критерию Адрес 2 соответствует критерию
Таким образом, регулярное выражение помогает найти адреса, в которых отсутствует указанная часть. В примере выше показано, что первый адрес не содержит улицу, поэтому не соответствует критерию, а второй адрес содержит все четыре части и соответствует критерию.