/** * Проверяем индексации url-а * * @param string $text сайт * @param string $region регион * @param array $additional массив дополнительных параметорв * @throws Exception * * @return array */ public function isIndexed($text, $region = null, $additional = []) { $query = is_array($text) ? $text['text'] : $text; $domain = is_array($text) && !empty($text['domain']) ? $text['domain'] : null; // формируем данные для поиска $params = []; if (Uri::isValid($query)) { $query = Uri::wwwLess(Uri::httpLess($query)); $params['text'] = 'url:(' . $query . ') | url:(www.' . $query . ')'; } else { $params['text'] = $query; } $params['region'] = $region; // домен if (!Uri::isValid($query) && !empty($domain)) { $params['text'] .= " site:{$domain}"; } $result = $this->search($params); if (!isset($result['total_pages'])) { throw new Exception('Не удалось проанализировать выдачу.'); } $domain = $domain ?: Uri::getHost($query); $validate = !empty($additional['validate']); $urls = array_filter($result['results'], function ($record) use($domain, $validate) { if (!empty($domain)) { if (!Uri::isSameHostIdna($record->url, $domain, false)) { return false; } } return $validate ? Checker::isValid($record->url, 'text/html') : true; }); return ['indexed' => !empty($urls) && count($urls) > 0, 'urls' => $urls]; }