-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLab4.php
More file actions
127 lines (117 loc) · 6.96 KB
/
Lab4.php
File metadata and controls
127 lines (117 loc) · 6.96 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/*
В произвольном тексте(длинный текст) выполнить. При вводе слова в форму поиска необходимо найти все упоминания этого слова в тексте и выделить(подсветить) цветом, жирным или другим
настраивающим способом. В случае, если указываются 2 слова, то каждое должно искаться индивидуально, если слово сочетание указывается в кавычках, то ищется как единое словосочетание.
Помимо грубого поиска так же должен выполняться поиск слова с разными окончаниями: Родина, Родины, Родиной... Искомое слово получить через веб-форму.
*/
include 'CutTheEnd.php';
$text = array (
"Когда человек сознательно или интуитивно выбирает себе в жизни какую-то цель, жизненную задачу, он невольно дает себе оценку.",
"По тому, ради чего человек живет, можно судить и о его самооценке - низкой или высокой.",
"Если человек живет, чтобы приносить людям добро, облегчать их страдания, давать людям радость, то он оценивает себя на уровне этой своей человечности. ",
"Он ставит себе цель, достойную человека.",
"Только такая цель позволяет человеку прожить свою жизнь с достоинством и получить настоящую радость. Да, радость! ",
"Подумайте: если человек ставит себе задачей увеличивать в жизни добро, приносить людям счастье, какие неудачи могут его постигнуть? Не тому помочь? ",
"Но много ли людей не нуждаются в помощи?Если жить только для себя, своими мелкими заботами о собственном благополучии, то от прожитого не останется и следа. ",
"Если же жить для других, то другие сберегут то, чему служил, чему отдавал силы.",
"Можно по-разному определять цель своего существования, но цель должна быть. Надо иметь и принципы в жизни. ",
"Одно правило в жизни должно быть у каждого человека, в его цели жизни, в его принципах жизни, в его поведении: надо прожить жизнь с достоинством, чтобы не стыдно было вспоминать.",
"Достоинство требует доброты, великодушия, умения не быть эгоистом, быть правдивым, хорошим другом, находить радость в помощи другим.",
"Ради достоинства жизни надо уметь отказываться от мелких удовольствий и немалых тоже… Уметь извиняться, признавать перед другими ошибку - лучше, чем врать.",
"Обманывая, человек прежде всего обманывает самого себя, ибо он думает, что успешно соврал, а люди поняли и из деликатности промолчали.",
"Жизнь - прежде всего творчество, но это не значит, что каждый человек, чтобы жить, должен родиться художником, балериной или ученым. ",
"Можно творить просто добрую атмосферу вокруг себя. Человек может принести с собой атмосферу подозрительности, какого-то тягостного молчания, а может внести сразу радость, свет.",
"Вот это и есть творчество."
);
define("COUNT", 7);
$rb = array
(
"red", "orange", "yellow", "green", "cyan", "blue", "purple"
);
// Place of out file
$self = $_SERVER['PHP_SELF'];
$isQuote = false;
$isSearch = false;
$output = "<div><p>";
//Check if we have in POST our info.
//If not then we use standart text
if(isset($_POST['search'])) {
$str = $_POST['search'];
$isSearch = true;
//Check type of search
if ('"' != $str[0]) {
//From CutTheEnd.php
$pr = new Lingua_Stem_Ru();
preg_match_all('/[^\W\d]+/ui', $pr->stem_string($str), $buf);
$search = $buf[0];
}
else {
$isQuote = true;
$kol = preg_match_all('/[^\W\d]+/ui', $str);
$search = str_replace('"','',$str);
}
}
else {
$str = "";
}
if ($isSearch) {
for($i = 0; $i < count($text); $i++) {
//Split out textline
preg_match_all('/[\s]*[^\W\d]+[\s]*/ui', $text[$i], $buf);
//print_r($buf);
$words = $buf[0];
if (!$isQuote) {
//Looking through textline with all search words
for($j = 0; $j < count($words); $j++) {
$fl = true;
//with all search words
for($z = 0; ($z < count($search)) && $fl; $z++) {
if (0 < preg_match_all("/" . $search[$z] . "/ui", $words[$j])) {
$words[$j] = '<span style = "color:'. $rb[$z % COUNT] .'">' . $words[$j] . '</span>';
$fl = false;
}
}
}
}
else {
//Looking through textline with all search words
for($j = $kol; $j < count($words); $j++) {
$buf = "";
for ($z = $j - $kol; $z < $j; $z++) {
$buf .= $words[$z];
}
//echo $buf . "<br>";
//with all search words
if (0 < preg_match_all("/" . $search . "/u", $buf)) {
for ($z = $j - $kol; $z < $j; $z++) {
$words[$z] = '<span style = "color: red">' . $words[$z] . '</span>';
}
}
}
}
$text[$i] = implode($words);
$output .= $text[$i] . "<br>";
//echo $text[$i];
//print "\n";
}
}
else {
for($i = 0; $i < count($text); $i++) {
//Split out textline
preg_match_all('/[\s]*[^\W\d]+[\s]*/ui', $text[$i], $buf);
$text[$i] = implode($buf[0]);
$output .= $text[$i] . "<br>";
//echo $text[$i];
//print "\n";
}
}
$output .= " </p>
</div>
<div>
<form style='float:left; margin: 20px; ' action='$self' method='post'>
<input name='search' type='text' size='40' value ='{$str}'>
<input type='submit' value='Найти' />
</form>
</div>";
echo $output;
?>