From 7aef83eeacc6f012d0b05ef2b72eb37724b69edf Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Tue, 3 Mar 2026 22:42:33 +0300 Subject: [PATCH] fix: widen delivery text cleanup regex, cap house to 16 chars MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - Change regex from matching only "Уточните адрес доставки" to "Уточните \S+ доставки" to catch "время", "дату", etc. - Add mb_substr guard: house field capped at 16 characters (DB limit) - Fixes: "house should contain at most 16 characters" validation error Co-Authored-By: Claude Opus 4.6 --- erp24/services/MarketplaceService.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index a0c2b068..f91b4a03 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -3399,7 +3399,7 @@ class MarketplaceService $cleaned = preg_replace('/[вс]\s+\d{1,2}:\d{2}(?:—\d{1,2}:\d{2})?\s*/u', '', $cleaned); // Убираем служебные фразы, которые не являются адресом - $cleaned = preg_replace('/Уточните\s+адрес\s+доставки\s+у\s+получателя/ui', '', $cleaned); + $cleaned = preg_replace('/Уточните\s+\S+\s+доставки\s+у\s+получателя/ui', '', $cleaned); $cleaned = preg_replace('/Отправим\s+смс\s+получателю.*$/ui', '', $cleaned); $cleaned = preg_replace('/Пожалуйста.*сохранить\s+сюрприз/ui', '', $cleaned); $cleaned = preg_replace('/чтобы\s+узнать\s+данные\s+для\s+доставки/ui', '', $cleaned); @@ -3429,6 +3429,11 @@ class MarketplaceService $city = $parts[0]; } + // Защита: house не может быть длиннее 16 символов (ограничение БД) + if (mb_strlen($house) > 16) { + $house = mb_substr($house, 0, 16); + } + switch (mb_strtolower($city)) { case 'нижний новгород': $latitude = 56.3269; -- 2.39.5