[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Фильтрация результатов поиска
Dark1Ns
Offline
Дата: Воскресенье, 27.11.2011, 13:47 | Сообщение # 1
Постов: 102


В этом примере демонстрируется как с помощью 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-скрипт обрабатывает столько материалов, сколько возвращает поисковый скрипт сайта. Если вы хотите, чтобы скрипт работал с большим количеством результатов, чем те, которые возвращаются по умолчанию, измените соответствующую настройку в панеле управления сайтом.
Прикрепления: 5516918.jpg (41.2 Kb)




[Table][/Table]
  • Страница 1 из 1
  • 1
Поиск:

Новые файлы


Статистика Форума
Последние обновленные темы Самые популярные темы Самые активные Новые участники
  • Сайт чтобы увидеть скрытых друзей в ВК (29)
  • ПОРНО ВИДЕО ОНЛАЙН! (39)
  • ЭРОТИЧЕСКИЕ И СЕКС НОВОСТИ! (1)
  • Агенство недвижимости (13)
  • Анекдот " В маршрутке " xD (4)
  • Armenbow (0)
  • Программа по поиску скрытых друзей В Контакте (4)
  • Опрос: Где же вы храните свои пароли? :) (9)
  • Фото девушек (3)
  • Guf (5)
  • Услуга рассылки на 100 000 сайтов! Конкуренты будут в шоке! (3)
  • ЭРОТИЧЕСКИЕ И СЕКС НОВОСТИ! (10)
  • Комната флуда=) (150)
  • ПОРНО ВИДЕО ОНЛАЙН! (39)
  • Прибавь 5+ (38)
  • Досчитай до 10000! (37)
  • Сайт чтобы увидеть скрытых друзей в ВК (29)
  • Откуси фрукт! (18)
  • Скоростные камеры высокого разрешения, камеры CCD (17)
  • Агенство недвижимости (13)
  • ЭРОТИЧЕСКИЕ И СЕКС НОВОСТИ! (10)
  • Опрос: Где же вы храните свои пароли? :) (9)
  • Как вы относитесь к "матерным" песням? (8)
  • Какой автомобиль вашей мечты? (7)
  • L1ght
  • HellioS
  • Dark1Ns
  • SVd
  • Ra1N
  • {{GUF}}
  • -=Vampir=-
  • ExclusivE
  • yandex
  • Stasix
  • Misha
  • Kempel
  • kn1fe
  • NOOB1994
  • Doktor
  • cl1ck
  • Steep-naz
  • BAMPIR
  • Andron
  • Fike
  • AiB
  • ViJeKS
  • Support
  • 7heaven
  • ArthurBoups
  • jureundulse10:07
    Mursik17:26
    LavillMunny04:22
    Haileyrzo01:26
    Kayleejatly03:19
    DrozTourb20:15
    wayyy00:32
    MarusechkaTramn09:57
    gasconPrimo10:27
    JamesWes08:33
    boda05:08
    Coreyhagma22:50
    Waynem21:35
    chandu9922:07
    Douts03:08
    Giordany12:04
    haug14:50
    ChapligaMes16:10
    Kolyasob10:14
    burenoktrume16:33