Задать вопрос
Air_O
@Air_O
Начинающий web-разработчик

Как спрятать вывод строки из файла в спойлер?

Добрый день, пользователи Тостера! Моя программа работает следующим образом: Есть файлы на сервере, есть 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();

?>
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Простейший пример спойлера: https://jsfiddle.net/f8x64822/

P.S.: код ужасный, лапша же.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@123581321345589
web-разработчик
Простейший пример с использованием jQuery:
jQuery(document).ready(function($) {
  $('box_head').on('click', function() {
    $(this).siblings('.box_body').slideToggle();
  });
});

<div class="box">
  <div class="box_head">Название сполйлера</div>
  <div class="box_body" style="display:none;">Контенет спойлера</div>
</div>

Дальше все зависит от нужд и воображения..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы