Как с помощью php-скрипта отфильтровать результаты поиска по сайту по букве алфавита. Скрипт ожидает ввода поисковой фразы, после нажатия кнопки "Поиск" выполняет POST запрос на скрипт поиска по сайту, затем структурирует полученный результат (ответ), фильтрует его и выводит на страницу.
В шаблоне страницы вывод поисковой формы:
Code
<div align="center">
<p>
<b>Данный пример демонстрирует использование скрипта для фильтрации результатов поиска по сайту по букве алфавита</b>
</p>
</div>
<hr>
<?$PHPCODE$("filtersearchbyalph.php")?>
filtersearchbyalph.php - заменяем на ссылку из залитого скрипта.
его скачиваем в архиве уже готовый,или используем блокнот и сохраняем с расширением php с таким названием filtersearchbyalph.php ниже приведенный код вставляем в блокнот
Code
<? </div><div> if ((count($_POST)>0) && $_POST['q']) </div><div> { </div><div> $___notjson=1; </div><div> $ch = curl_init(); </div><div> curl_setopt_array($ch, array(CURLOPT_URL => "/search/?q=".$_POST['q'], </div><div> CURLOPT_RETURNTRANSFER => TRUE, </div><div> CURLOPT_CONNECTTIMEOUT => 5, </div><div> CURLOPT_TIMEOUT => 5, </div><div> CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)") </div><div> ); </div><div> $data = curl_exec($ch); </div><div> curl_close($ch); </div><div> preg_match("/<table\s+[^>]*?\s*class=[\'\"]?\s*eBlock\s*[\'\"]?/si",$data,$matches,PREG_OFFSET_CAPTURE); </div><div> $data=substr($data,$matches[0][1]); </div><div> $matches="none"; </div><div> preg_match_all("/<div\s+[^>]*?\s*class=[\'\"]?\s*eTitle\s*[\'\"]?.*?\s*<\/div>/i",$data,$matches); </div><div> $mydata=array(); </div><div> $myalph=array(); </div><div> foreach ($matches[0] as $key => $value) </div><div> { </div><div> $mydata[$key]=array(); </div><div> $mydata[$key][0]=$value; </div><div> preg_match("/>\s*(\p{L})[^<]+</iu",$value,$matches0); </div><div> if (!isset($matches0[1])) next; </div><div> $matches0[1]=mb_strtoupper($matches0[1],'UTF-8'); </div><div> if (!isset($myalph[$matches0[1]])) $myalph[$matches0[1]]=array(); </div><div> array_push($myalph[$matches0[1]],$key); </div><div> } </div><div> preg_match_all("/<div\s+[^>]*?\s*class=[\'\"]?\s*eMessage\s*[\'\"]?.*?\s*<\/div>/i",$data,$matches); </div><div> foreach ($matches[0] as $key => $value) $mydata[$key][1]=$value; </div><div> preg_match_all("/<div\s+[^>]*?\s*class=[\'\"]?\s*eDetails\s*[\'\"]?.*?\s*<\/div>/si",$data,$matches); </div><div> foreach ($matches[0] as $key => $value) $mydata[$key][2]=$value; </div><div> $html="<div> </div><div> <form name=\"sortform\" action=\"/php/example005/filtersearchbyalph.php\" method=\"post\" onsubmit=\"_uPostForm(this,{dataType:'script'});return false;\" onerror=\"alert('Error');\"> </div><div> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> </div><div> <tr><td>"; </div><div> foreach ($myalph as $key => $value) $html.=" <input type=\"submit\" value=\"".$key."\" uzzonclick=\"document.sortform.letter.value='".$key."'\">"; </div><div> $html.="</td></tr></table> </div><div> <input type=\"hidden\" name=\"q\" value=\"".$_POST['q']."\"> </div><div> <input type=\"hidden\" name=\"letter\" value=\"\"> </div><div> </form></div><table>"; </div><div> if (!$_POST['letter']) foreach ($mydata as $value) $html.="<tr><td>".$value[0].$value[1].$value[2]."</td></tr><tr><td> </td></tr>"; </div><div> 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>"; </div><div> $html.="</table><br><hr><br>"; </div><div> $html=str_replace("\n"," ",$html); </div><div> $html=str_replace("'","'",$html); </div><div> echo "$('#sortsearch').html('$html')"; </div><div> return; </div><div> } </div><div> ?>
<div id='sortsearch'></div>
<form action="/php/example005/filtersearchbyalph.php" method="post" onsubmit="_uPostForm(this,{dataType:'script'});return false;" onerror="alert('Error');">
<p>Поисковый запрос: </p><input type="text" name="q" />
<p><input type="submit" value="Поиск"></p>
</form>