Добрый день, пользователи Тостера! Моя программа работает следующим образом: Есть файлы на сервере, есть php-модуль, который содержит функцию поиска ключевого слова в текстовых файлах и выводит строку, содержащую это слово. Мне необходимо, чтобы результат поиска выводился в спойлер, который по умолчанию будет закрыт, и при нажатии на него разворачивался результат поиска. Вот код:
<?php
function getFiles() {
$dir = './files';
$files = array_diff(scandir($dir), array('..', '.'));
foreach ($files as $key => $value) {
// echo $value . ', ';
}
return $files;
}
function search($fileName, $searchText, $pattern) {
$contents = file_get_contents('./files/' . $fileName);
if(preg_match_all($pattern, $contents, $matches)) {
echo "<br>" . "Результат поиска в файле: " . $fileName . "<br>";
$string = implode($matches[0], "<br>");
$search = preg_quote($searchText);
$string = preg_replace("/($search)/iu", "<span style='background-color: #44FF00'>$1</span>", $string);
//$substring = mb_substr($string, 0, strlen($string));
echo $string;
} else {
echo "<br>" . "Нет совпадений в файле " . $fileName . "<br>";
}
}
function searchAnyWord() {
if ($_POST['word'] != '' && $_POST['word'] != ' ') {
$arSeacrh = GetFiles();
$searchText = $_POST['word'];
foreach ($arSeacrh as $k=>$fileName) {
search($fileName, $searchText, "/^.*?$searchText.*$/imu");
echo "<br>";
}
} else {
echo '<span style="color: #D10000">Ошибка, заполните поле поиска!</span>';
}
}
function searchSpecWord() {
if ($_POST['word'] != '' && $_POST['word'] != ' ') {
$arSeacrh = GetFiles();
$searchText = $_POST['word'];
foreach ($arSeacrh as $k=>$fileName) {
search($fileName, $searchText, "/^.*?$searchText.*$/mu");
echo "<br>";
}
} else {
echo '<span style="color: #D10000">Ошибка, заполните поле поиска!</span>';
}
}
function changeOptions() {
if($_POST['anyWord'] == true) {
searchAnyWord();
} else {
searchSpecWord();
}
}
changeOptions();
?>