-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.php
100 lines (82 loc) · 3.59 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/**
* Я тестил много запросов, что именно не нашел?
* Возможно конечно при дефолтном запросе могло что-то пойти не так,
* т.к подсказка отличалась от настоящего запроса
*/
//функционал
require_once 'FinderInGoogle.php';
require_once 'FinderInYandex.php';
require_once 'FinderInBing.php';
//для вывода
require_once 'template/Template.php';
//для возможности поиска
set_time_limit(500);
//для страницы
$dataArr = [];
$template = file_get_contents('template/input.tpl');
//обработка запроса
if (!empty($_POST)) {
//выражение для входных данных
$regExpIsWebSite = '[
^( # начало строки
(http|https)://)? # протокол
(
([\w-]+\.){0,3} # поддомены перед главным доменным именем
([-\w]+) # обязательное доменное имя
(\.[\w]+)? # зона
)
(/.*)? # месиво после домена
]xi';
//Проверка глубины
$regexpInRange = '#^[0-4]?[0-9]?[0-9]$|^500$#';
$regexpIsNum = '#^[0-9]+$#';
//Значения по умолчанию
$defaultSite = 'ozon.ru';
$defaultRequest = 'купить лыжи';
$defaultDepth = 50;
$maxDepth = 500;
//проверка корректности
$isNum = preg_match($regexpIsNum, $_POST['dep']);
$isSite = preg_match($regExpIsWebSite, $_POST['site']);
//задание корректных параметров
$site = $isSite ? $_POST['site'] : $defaultSite;
$depth = $isNum ?
preg_match($regexpInRange, $_POST['dep']) ? (int)$_POST['dep'] : $maxDepth
: $defaultDepth;
//Задание корректных параметров
$request = $_POST['req'] ?: $defaultRequest;
//создание искателя в определенном поисковике
switch ($_POST['flexRadioDefault']) {
case 'yandex' : $finder = new FinderInYandex($request, $site, $depth);
break;
case 'google' : $finder = new FinderInGoogle($request, $site, $depth);
break;
case 'bing' : $finder = new FinderInBing($request, $site, $depth);
break;
}
//поиск
$infoFound = $finder->ToFind();
//шаблон
$template = file_get_contents('template/output.tpl');
$dataArr = [
'site' => $site,
'request' => $request,
'search' => $_POST['flexRadioDefault'],
'info_cycle' => is_array($infoFound)
? array(
['head' => 'Ссылка', 'info' => $infoFound['url']],
['head' => 'Полный домен', 'info' => $infoFound['full_domain']],
['head' => 'Главный домен', 'info' => $infoFound['domain']],
['head' => 'Зона', 'info' => $infoFound['zone']],
['head' => 'Заголовок', 'info' => $infoFound['header']],
['head' => 'Описание', 'info' => $infoFound['description']],
['head' => 'Позиция', 'info' => $infoFound['position']],
['head' => 'Доступность', 'info' => $infoFound['availability']]
)
: array(
['head' => 'ERROR: ', 'info' => $infoFound]
)
];
}
print Template::build($template, $dataArr);