Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

  • Закрытая тема Тема закрыта

Поиск по сайту по базе в текстовом файле

#1 oduvan4ik

oduvan4ik
  • Пользователь
  • 45 сообщений
  • Репутация: 0
0

Отправлено 15 Август 2008 - 20:25

Кто нибудь знает или может есть у кого скрипт поиска по сайту по базе в текстовом файле ???

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Поиск по сайту. Как сделать?
  2. Как организуется поиск по сайту?
  3. Обработка большого текстового файла
  4. "Хороший" поиск по сайту
  5. Парсинг txt файла построчно, поиск и выдача результата

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 19 Август 2008 - 01:17

Вы сначала определитьесь... Поиск по базе данных, поиск по текстовому файлу. Что вам именно нужно! Написать не проблема, только если файловая система, там будет всё зависеть от представления, что хранится и как...
  • 0

#3 oduvan4ik

oduvan4ik
    Topic Starter
  • Пользователь
  • 45 сообщений
  • Репутация: 0

Отправлено 19 Август 2008 - 18:23

по текстовому файлу ... например название ссылки ( ну то есть сама ссылка ) и ее описание
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 19 Август 2008 - 19:28

Тогда щас напишем...
У нас будет файл base.txt вида
ссылка_1|описание_1
ссылка_2|описание_2
..............................
ссылка_N|описание_N
Файл поиска search.php
<?php
function search_file($file, $search) // 1 - файл, 2 - искомая строка || ФУНКЦИЯ поиска
{
$file = file($file);
$i = 0;
$search_str = array();
foreach($file as $str)
{
$array = explode("|", $str); // Режем строку
if(eregi($search, $array[1])) $search_str[] = $i; // Поиск по описанию
$i++;
}
return search_str;
}

function print_search($file, $numbers) // Функция вывода
{
$file = file($file);
foreach($numbers as $number)
{
$array = explode("|", $file[$number]);
echo "Ссылка: ". $array[0] ."<br>";
echo "Описание: ". $array[1] ."<br>";
echo "<br><br>";
}
}
?>

<html>
<head>
<title>Поиск по файлу</title>
</head>
<body>

<?php
if(isset($_POST['submit'])) // Если нажата кнопка поиска
{
$file = "base.txt"; // Имя файла
$search_array = array();
$search_array = search_file($file, $_POST['search']); // Поиск по файлу
print_search($file, $search_array); // Вывод найденного
}
?>

Форма поиска
<br>
<form method="POST">
Найти: <input type="text" name="search">
<input type="submit" value="Поиск">
</body>
</html>



Не проверял, но вроде всё верно должно искать <_<
  • 0

#5 Liga-liga

Liga-liga
  • Пользователь
  • 8 сообщений
  • Репутация: 0

Отправлено 13 Ноябрь 2008 - 13:53

или так:
Файлик (назавем его index.txt):
ссылка на файл|||||индекс страницы|||||Заголовок|||||описание|||||ключевые слова|||||время|||||номер|||||
......................
ссылка на файл|||||индекс страницы|||||Заголовок|||||описание|||||ключевые слова|||||время|||||номер|||||


второй файлик (назавем его search.php)
<?php
Error_Reporting(E_ALL & ~E_NOTICE);

if ($search == "on")
{
function robot_parse_words ($words)
{
preg_match_all('/[^ ][^\"]?[\w][^\"]?[^ ]+?/Umix', $words, $m);
if (!isset($m)) return '';
return ($m);
}

function robot_parse_rip ($index, $words)
{
$tempcount = count($words);
if ($tempcount >= 2)
{
$lasts = $tempcount-1;
$firstwords = $words[0];
$lastwords = $words[$lasts];
}
else
{
$firstwords = $words[0];
$lastwords = $words[0];
}
preg_match_all('/[^\']{0,30}[^\']?'.$firstwords.'+[^\']{0,30}?/Umix', $index, $m);
if (!isset($m)) return '';
return ($m);
}


define("DOC_ROOT", dirname(__FILE__));
#создание списка слов

$bdlindex = DOC_ROOT.'/index.txt';
$content = file("$bdlindex");

$words = robot_parse_words($text);


foreach ($content as $key => $value)
{
foreach ($words[0] as $key2 => $value2)
{
if (preg_match("/$value2/i", $value))
{
$searcha[$key] = $value;
}
else
{
unset($searcha[$key]);
break;
}
}

}

$searcha = array_unique($searcha);

foreach ($searcha as $key3 => $value3)
{
$tempbreak = explode("|||||", $value3);
$link = $tempbreak[0];
$index = $tempbreak[1];
$title = $tempbreak[2];
$deskr = $tempbreak[3];
$meta = $tempbreak[3];
$index = robot_parse_rip($index, $words[0]);
$seserss = count($index[0]);
$massivsearc[] = array($index[0],$link,$title,$deskr,$meta,$seserss);
}

}
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<title>Поисковик </title>
</head>
<html>
<body>


<form method="POST" action="search.php?search=on">
<input type="text" name="text" size="20"
<?php if ($search == "on") {
echo "value = \"$text\" ";
}
?>
>
<input type="submit" value="Поиск" name="B1">
</form>
<?php
if ($search == "on")

{
echo "Результаты поиска по сайту: <br>";
echo "Вы искали: $text<br>";
$all = count($massivsearc);
echo "Всего найдено страниц:$all <br><br>";
sort($massivsearc);

foreach ($massivsearc as $key => $value)
{
$num = $key+1;
$texts = $value[0][0];
$search = array("'>'", "'run_after_body\(\);'","'after_body\(\);'");
$replace = array(" ","","");
$texts = preg_replace($search,$replace,$texts);

foreach ($words[0] as $key2 => $value2)
{
if (preg_match("/$value2/i", $texts))
{
$search = array("/".$value2."/i");
$replace = array("<b>$value2</b>");
$texts = preg_replace($search,$replace,$texts);
}

}

echo "<b>Номер: $num.</b> <a target=_blank href=www.сайт.ru/index.php$value[1]>......$texts.........</a><br>";
echo "$value[1]<br>";
echo "Совпадений на странице: $value[5]<br><br>";

}

}

?>



</body>

</html>

  • 0

#6 smaks

smaks
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 03 Июль 2010 - 09:24

А как быть если метод POST не поддерживается хостером? Как сделать через GET

Переименовал .html в php нормально но не ищет не выводит из txt файла
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Июль 2010 - 10:12

smaks, в вы уверены, что хостер поддерживает PHP? Что-то я никогда не видел хостера, который бы не поддерживал бы POST передачу данных, это же просто невыносимо, кидать надо таких хостеров.
И так, создайте в корне хоста файл primer.php с содержимым:
<?php

phpinfo();

?>

Теперь набери в адресной строке _http://your-site.ru/primer.php , если в браузере отобразилась информация о версии PHP, о различных его настройках, о подключенных модулях, значит PHP работает нормально. Если же в браузер выдастся тот же код, что мы написали в файле, значит хостер не поддерживает PHP.
  • 0

#8 smaks

smaks
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 03 Июль 2010 - 10:22

Поддерживает Я зарегился на бесплатном хостинге с поддержкой php сделал базу в txt вида запись|описание закинул search.php в индекс вывел форму
POST стал поддерживаться когда index.html переименовал в .php но вводишь текст нажимаешь поиск и ни чего не происходит

Что посоветуете
  • 0

#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Июль 2010 - 22:14

smaks, покажите весь код, которым пользуетесь, содержимое текстового файла и по чему вы ищите? Надо искать по описанию. Конечно как написано, скрипт я не проверял, но вроде ошибок не вижу. Попробую после предоставления вами данных
  • 0

#10 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 05 Июль 2010 - 10:27

Кстати, вставлю свою лепту. Все функции ereg в PHP 5.3 уже deprecated.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru