log("Старт парсинга {$this->case_number} для статуса: $status (РЕГИОНАЛЬНЫЙ СУД)"); $this->log("Парсим данные из ссылки: $url"); // Загружаем HTML-контент страницы дела $html = @file_get_contents($url); if ($html === false) { $this->log("Ошибка: не удалось загрузить страницу по ссылке: $url"); return null; } $this->log("Страница успешно загружена. Начинаем парсинг..."); // Парсим HTML с помощью DOMDocument и XPath $dom = new DOMDocument(); // Важно: указываем кодировку UTF-8 для корректного парсинга @$dom->loadHTML('' . $html); $xpath = new DOMXPath($dom); // Определяем div для парсинга $div_id = ($status === 'представительство в суде 1й инстанции' || $status === 'выдача листа' || $status === 'исполнительное производство' || $status === 'заявление на лист') ? 'cont2' : 'cont3'; $rows = $xpath->query("//div[@id='$div_id']//tr"); $this->log("Найдено строк (tr) в div с id '$div_id': " . $rows->length); // Массив для хранения последнего события $last_event = null; // Обрабатываем каждую строку таблицы foreach ($rows as $row) { $event_name = trim($xpath->query('./td[1]', $row)->item(0)->nodeValue ?? ''); $event_date = trim($xpath->query('./td[2]', $row)->item(0)->nodeValue ?? ''); $event_time = trim($xpath->query('./td[3]', $row)->item(0)->nodeValue ?? ''); $location = trim($xpath->query('./td[4]', $row)->item(0)->nodeValue ?? ''); $event_result = trim($xpath->query('./td[5]', $row)->item(0)->nodeValue ?? ''); $event_basis = trim($xpath->query('./td[6]', $row)->item(0)->nodeValue ?? ''); $note = trim($xpath->query('./td[7]', $row)->item(0)->nodeValue ?? ''); $publication_date = trim($xpath->query('./td[8]', $row)->item(0)->nodeValue ?? ''); // Логируем каждую строку $this->log("Найдено событие: $event_name, Дата: $event_date, Время: $event_time, Место: $location, Результат: $event_result, Основание: $event_basis, Примечание: $note, Дата размещения: $publication_date"); // Пропускаем записи, если название события не указано или дата неверная if (empty($event_name) || empty($event_date) || $event_date === '1970-01-01') { $this->log("Пропущено событие: название или дата не указаны."); continue; } // Форматируем даты $formatted_date = date('Y-m-d', strtotime($event_date)); $formatted_publication_date = date('Y-m-d', strtotime($publication_date)); $eventData = [ 'event_name' => $event_name, 'event_date' => $formatted_date, 'event_time' => $event_time, 'location' => $location, 'event_result' => $event_result, 'event_basis' => $event_basis, 'note' => $note, 'publication_date' => $formatted_publication_date, ]; // Сохраняем событие в БД $this->saveEvent($eventData); // Запоминаем последнее событие для ответа $last_event = $eventData; } return $last_event; } } ?>