public function actionShow() { $element = new Search($this->di->db); $out = $element->find(['id' => $this->di->router->get('id')]); if ($out) { $values = explode("\t", htmlspecialchars_decode($out['elements'], ENT_QUOTES)); $this->set('title', 'Найденные значения'); $this->render('show', ['page_title' => $this->get('title'), 'url' => $out['url'], 'count' => $out['count'], 'values' => $values]); } else { $this->returnError(); } }
public function getSearchResult($db, $types) { $record = new Search($db); $link = $this->post->get('link'); $type = (int) $this->post->get('type'); $text = $this->post->get('text'); if (strpos($link, 'http') === false) { $link = 'http://' . $link; } $regexp = []; foreach ($types as $t) { $regexp[$t['id']] = is_callable($t['regexp']) ? $t['regexp']($text) : $t['regexp']; } /* 1 => '/(<a.*?\/a>)/', 2 => '/(<img.*?>)/', 3 => '/'.preg_quote($text, '/').'/', */ if ($element = $record->find(['type' => $type, 'url' => $link])) { return [1, "На этой странице уже производился поиск: <a href=\"/elements/show/" . $element['id'] . "/\">перейти</a>"]; } if (!isset($regexp[$type])) { return [-1, 'Недействительный тип поиска']; } if (!($siteSrc = $this->getSearchData($link))) { return [-1, 'Неверный адрес сайта']; } preg_match_all($regexp[$type], $siteSrc, $match); if (0 == count($match[0])) { return [-1, 'Не было найдено ни одного совпадения']; } $record->set('url', $link); $record->set('type', $type); $record->set('elements', join("\t", $match[0])); $record->set('count', count($match[0])); if ($id = $record->save()) { return [1, "Было найдено совпадений: " . count($match[0]) . " (<a href=\"/elements/show/" . $id . "/\">перейти</a>)"]; } return [0, 'Произошла ошибка']; }