Фильтрация результатов поиска

1897
8.6 из 10
Проголосовало: 6




В этом примере демонстрируется как с помощью php-скрипта отфильтровать результаты поиска по сайту по букве алфавита. Скрипт ожидает ввода поисковой фразы, после нажатия кнопки "Поиск" выполняет POST запрос на скрипт поиска по сайту (в данном примере поиск проходит по сайту forum.ucoz.ru), затем структурирует полученный результат (ответ), фильтрует его и выводит на страницу. Исходный код данного примера приведен ниже.
В шаблоне страницы:

Code
<div align="center">  
   

  <b>Данный пример демонстрирует использование скрипта для фильтрации результатов поиска по сайту по букве алфавита</b>  
  </p>  
</div>  
<hr>

PHP скрипт примера:

Code
<if ((count($_POST)>0) && $_POST['q'])  
{  
  $___notjson=1;  
  $ch = curl_init();  
  curl_setopt_array($ch, array(CURLOPT_URL => "http://forum.ucoz.ru/search/?q=".$_POST['q'],  
  CURLOPT_RETURNTRANSFER => TRUE,  
  CURLOPT_CONNECTTIMEOUT => 5,  
  CURLOPT_TIMEOUT => 5,  
  CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")  
  );  
  $data = curl_exec($ch);  
  curl_close($ch);  
  preg_match("/]*?\s*class=[\'\"]?\s*eBlock\s*[\'\"]?/si",$data,$matches,PREG_OFFSET_CAPTURE);  
  $data=substr($data,$matches[0][1]);  
  $matches="none";  
  preg_match_all("/]*?\s*class=[\'\"]?\s*eTitle\s*[\'\"]?.*?\s*<\/div>/i",$data,$matches);  
  $mydata=array();  
  $myalph=array();  
  foreach ($matches[0] as $key => $value)  
  {  
  $mydata[$key]=array();  
  $mydata[$key][0]=$value;  
  preg_match("/>\s*(\p{L})[^<]+ if (!isset($matches0[1])) next;  
  $matches0[1]=mb_strtoupper($matches0[1],'UTF-8');  
  if (!isset($myalph[$matches0[1]])) $myalph[$matches0[1]]=array();  
  array_push($myalph[$matches0[1]],$key);  
  }  
  preg_match_all("/]*?\s*class=[\'\"]?\s*eMessage\s*[\'\"]?.*?\s*<\/div>/i",$data,$matches);  
  foreach ($matches[0] as $key => $value) $mydata[$key][1]=$value;  
  preg_match_all("/]*?\s*class=[\'\"]?\s*eDetails\s*[\'\"]?.*?\s*<\/div>/si",$data,$matches);  
  foreach ($matches[0] as $key => $value) $mydata[$key][2]=$value;  
  $html="  

";  
  foreach ($myalph as $key => $value) $html.=" ";  
  $html.="  

   
   
";  
  if (!$_POST['letter']) foreach ($mydata as $value) $html.="";  
  else foreach ($myalph[$_POST['letter']] as $value) $html.="";  
  $html.="  
".$value[0].$value[1].$value[2]."  
   
".$mydata[$value][0].$mydata[$value][1].$mydata[$value][2]."  
   

";  
  $html=str_replace("\n"," ",$html);  
  $html=str_replace("'","'",$html);  
  echo "$('#sortsearch').html('$html')";  
  return;  
}  
?>  

<div id='sortsearch'></div>  
<form action="/php/example005/filtersearchbyalph.php" method="post" onsubmit="_uPostForm(this,{dataType:'script'});return false;" onerror="alert('Error');">  

Поисковый запрос: </p><input type="text" name="q" />  

<input type="submit" value="Поиск"></p>  
</form>

Примечание
php-скрипт обрабатывает столько материалов, сколько возвращает поисковый скрипт сайта. Если вы хотите, чтобы скрипт работал с большим количеством результатов, чем те, которые возвращаются по умолчанию, измените соответствующую настройку в панеле управления сайтом.

Автор публикации: Загрузка
Загрузка
Вовчик, это его n материал
  • Оставить первым комментарий:
Добавлять комментарии могут только зарегистрированные пользователи.
Регистрация | Вход
Меню сайта
Категории
Для помощи создания сайта uCoz 25
Скрипты и модификации для Ucoz 2118
Шаблоны форумов Ucoz 28
Шаблоны сайтов Ucoz 431
Авторство Webo4ki 309
php скрипты для ucoz 57
Графика для uCoz 40
Мини-чат
Последние комментарии
  • Marishka написал:
  • Можете добавить свои input поля, но сохраняйте их порядок в html для правильного сохранения и вывода.
  • Marishka написал:
  • Новая версия 1.3 (+6 новых станций):
    Установка:
    Демо: Перейти
  • Marishka написал:
  • Доп 8 станций:
    Код
    <div class="mSt"><p>Tropical</p><div data="2/trop_64">64</div><br><div data="2/trop_128">128</div><br><div data="2/trop_320">320</div></div>  
      <div class="mSt"><p>Нафталин FM</p><div data="2/naft_64">64</div><br><div data="2/naft_128">128</div><br><div data="2/naft_320">320</div></div>  
      <div class="mSt"><p>Rave FM</p><div data="2/rave_64">64</div><br><div data="2/rave_128">128</div><br><div data="2/rave_320">320</div></div>  
      <div class="mSt"><p>Gold</p><div data="2/gold_64">64</div><br><div data="2/gold_128">128</div><br><div data="2/gold_320">320</div></div>  
      <div class="mSt"><p>GOA/PSY</p><div data="2/goa_64">64</div><br><div data="2/goa_128">128</div><br><div data="2/goa_320">320</div></div>  
      <div class="mSt"><p>Minimal/Tech</p><div data="2/mini_64">64</div><br><div data="2/mini_128">128</div><br><div data="2/mini_320">320</div></div>  
      <div class="mSt"><p>House</p><div data="2/fut_64">64</div><br><div data="2/fut_128">128</div><br><div data="2/fut_320">320</div></div>  
      <div class="mSt"><p>Megamix</p><div data="2/mix_64">64</div><br><div data="2/mix_128">128</div><br><div data="2/mix_320">320</div></div>


    Fix работы радио:
    Находим: if(radUrl=="tm" || radUrl=="ps" || radUrl=="teo" || radUrl=="dc")
    Меняем на: if (radUrl == "tm" || radUrl == "ps" || radUrl == "teo" || radUrl == "dc" || radUrl == "gop")
  • CbIPoK2513 написал:
  • Мой вариант выдаёт аватарку картинкой, а не текстом.
  • waak написал:
  • и ещё забыл добавить что использую модуль каталог сайтов
    Последние темы
    Опрос
    258
    А
    Р
    Что произойдёт: $("#...
    Статистика
    Анализ интернет сайта
    0
    онлайн
    0
    наших
    0
    чужих
    Онлайн всего: 3
    Гостей: 3
    Пользователей: 0
    0
    Сегодня были
    Топ пользователей: