RSS
 

Get Adobe Flash player

Кращі ігри

Кращі фільми

 
[ Нові повідомлення · Учасники · Правила форуму · Пошук · RSS ]
  • Сторінка 1 з 1
  • 1
Фильтрация результатов поиска
allgamenewsДата: Пт, 11.04.01, 18:20 | Повідомлення # 1
}{OTABUЧ
Группа: Адміністратори
Повідомлень: 577
Статус: відсутній
Заслуги User-A:
За 200 Постів За 400 Постів
В этом примере демонстрируется как с помощью php-скрипта отфильтровать результаты поиска по сайту по букве алфавита. Скрипт ожидает ввода поисковой фразы, после нажатия кнопки "Поиск" выполняет POST запрос на скрипт поиска по сайту (в данном примере поиск проходит по сайту forum.ucoz.ru), затем структурирует полученный результат (ответ), фильтрует его и выводит на страницу. Исходный код данного примера приведен ниже.

В шаблоне страницы:

Code
<div align="center">
     


         <b>Данный пример демонстрирует использование скрипта для фильтрации результатов поиска по сайту по букве алфавита</b>
     </p>
</div>
<hr>
<?$PHPCODE$("http://phpexample.ucoz.net/php/example005/filtersearchbyalph.php")?>

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("/<table\s+[^>]*?\s*class=[\'\"]?\s*eBlock\s*[\'\"]?/si",$data,$matches,PREG_OFFSET_CAPTURE);
     $data=substr($data,$matches[0][1]);
     $matches="none";
     preg_match_all("/<div\s+[^>]*?\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})[^<]+</iu",$value,$matches0);
         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("/<div\s+[^>]*?\s*class=[\'\"]?\s*eMessage\s*[\'\"]?.*?\s*<\/div>/i",$data,$matches);
     foreach ($matches[0] as $key => $value) $mydata[$key][1]=$value;
     preg_match_all("/<div\s+[^>]*?\s*class=[\'\"]?\s*eDetails\s*[\'\"]?.*?\s*<\/div>/si",$data,$matches);
     foreach ($matches[0] as $key => $value) $mydata[$key][2]=$value;
     $html="<div>
<form name=\"sortform\" action=\"/php/example005/filtersearchbyalph.php\" method=\"post\" onsubmit=\"_uPostForm(this,{dataType:'script'});return false;\" onerror=\"alert('Error');\">
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
<tr><td>";
     foreach ($myalph as $key => $value) $html.=" <input type=\"submit\" value=\"".$key."\" onclick=\"document.sortform.letter.value='".$key."'\">";
     $html.="</td></tr></table>
<input type=\"hidden\" name=\"q\" value=\"".$_POST['q']."\">
<input type=\"hidden\" name=\"letter\" value=\"\">
</form></div><table>";
     if (!$_POST['letter']) foreach ($mydata as $value) $html.="<tr><td>".$value[0].$value[1].$value[2]."</td></tr><tr><td> </td></tr>";
     else foreach ($myalph[$_POST['letter']] as $value) $html.="<tr><td>".$mydata[$value][0].$mydata[$value][1].$mydata[$value][2]."</td></tr><tr><td> </td></tr>";
     $html.="</table><br><hr><br>";
     $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-скрипт обрабатывает столько материалов, сколько возвращает поисковый скрипт сайта. Если вы хотите, чтобы скрипт работал с большим количеством результатов, чем те, которые возвращаются по умолчанию, измените соответствующую настройку в панеле управления сайтом.


 
  • Сторінка 1 з 1
  • 1
Пошук:
Нова відповідь
Имя:
Текст повідомлення:
Опції повідомлення:
Read forums rules!!!
 
F-RL.COM не містить ніякої нелегальної інформації, тільки хеш-суми файлів вільно доступних в мережі. Власники сайту не можуть нести відповідальності за дії користувачів. Цей ресурс повністю анонімний - IP адреси і дії користувачів не зберігаються. Сайт не надає електронні версії творів, а займається індексуванням файлів, що знаходяться у файлообмінних мережах, Всі права на файли належать правовласникам. Якщо ви є правовласником файлу, проіндексованого нашою пошуковою машиною і не бажаєте щоб посилання на нього знаходилось в нашому каталозі, ознайомтесь з правилами нашого ресурсу. Для скарг пишіть сюди: holder@f-rl.com