Письмо с Яндека

748
.
есть проще решение..без апи яндекса..
.
Fublin (14.04.2013 / 22:21)
есть проще решение..без апи яндекса..
Да там не сложно, всё нормально написано в документации. там только ключ вписал, пагинацию дописал и вывод сделал и всё..
.
Pillott
Enter нажат, к чему теперь рыданья…
Вот практически готовый скрипт поиска под джон для личного пользования, с возможностью добавления в браузер нового средства поиска (не всё отфильтровано и есть уязвимости, на рабочий сайт не ставить)

define('_IN_JOHNCMS', 1); 
$rootpath = file_exists('login.php') ? '' : (file_exists('../login.php') ? '../' : (file_exists('../../login.php') ? '../../' : print('произошла ошибка'))); 
require_once $rootpath.'incfiles/core.php'; 
require_once $rootpath.'incfiles/head.php'; 

//include "template_header.html";
 
// обработка полей формы
$host = array_key_exists('host', $_REQUEST) ? $_REQUEST['host'] : 'johncms.com';

$query = array_key_exists('query', $_REQUEST) ? $_REQUEST['query'] : '';
 

$esc = htmlspecialchars($query);
$ehost = htmlspecialchars($host);
 
$search_tail = htmlspecialchars(" host:$ehost");
 

if ($_SERVER["REQUEST_METHOD"] =='GET') {
 $page = array_key_exists('page', $_GET) ? $_GET['page'] : 0;

} else $page = 0;
 
$found = 0;
$pages = 10;
 

?>
<div class="phdr">Поиск по заданному сайту</div>
<div class="menu"> 
<form method='POST' accept-charset='utf-8'>
Где ищем:<br/>
<input type='text' name='host' id='host' value='<?php echo $host ?>'/><br/>
Что ищем:<br/>
<input type='text' name='query' id='query' value='<?php echo $query ?>'/><br/>
<input type="submit" value=" Искать "/>
</form>
</div>
<?php
 
if ($query) {
 
 // XML запрос
 $doc = <<<DOC
<?xml version='1.0' encoding='utf-8'?>
<request>
 <query>$esc $search_tail</query>

 <groupings>
 <groupby attr="" mode="flat" groups-on-page="10" docs-in-group="1" />
 </groupings>
 
 <page>$page</page>
</request>
DOC;
 
 $context = stream_context_create(array(

 'http' => array(
 'method'=>"POST",
 'header'=>"Content-type: application/xml\r\n" .
 "Content-length: " . strlen($doc),
 'content'=>$doc

 )
 ));
 
 $response = file_get_contents('http://xmlsearch.yandex.ru/xmlsearch?user=логин_на_Яндекс&key=ваш_ключ', true, $context);
 if ( $response ) {

 
 $xmldoc = new SimpleXMLElement($response);
 
 $error = $xmldoc->response->error;
 $found_all = $xmldoc->response->found;
 $found = $xmldoc->xpath("response/results/grouping/group/doc");
 
 if ($error) {

 echo "Ошибка: " . $error[0];
 } else {

 echo "<div class='list1'><p class='gmenu'>Результат поиска: страниц — <b>$found_all</b></p><br/>\n";
 echo "<ol start='" . ($page * 10 + 1) . "'>\n";
 foreach ($found as $item) {

 echo "<li>";
 echo "<a target='_blank' href='{$item->url}'>" . highlight_words($item->title) . "</a><br/>\n";
 
 echo "<ul>";
 if ($item->passages) {

 foreach ($item->passages->passage as $passage) {

 echo "<li style='font-size: 80%'>" . highlight_words($passage) . "</li><br/>\n";
 }

 }
 echo "<span style='color: gray; font-size: 80%'>{$item->url}</span>";
 echo "</ul></li><br/>\n";
 
 }

 
 echo "</ol>\n";
 print_pager ($found_all, $query, $host, $page);
 }

 } else {
 echo "Внутренняя ошибка сервера.\n";
 }
 
}

echo "</div>";
 
//include "template_footer.html";

function highlight_words($node)

{
 $stripped = preg_replace('/<\/?(title|passage)[^>]*>/', '', $node->asXML)));
 return str_replace('</hlword>', '</strong>', preg_replace('/<hlword[^>]*>/', '<strong>', $stripped));

}
 
function print_pager($found_links, $query, $host, $page = 0, $links_on_page = 10)

{
 $query = htmlspecialchars($query);
 $host = htmlspecialchars($host);
 if ($page != 0) 
 echo "<a href='?page=" . ($page - 1) . "&query={$query}&host={$host}'>&#8592; предыдущая</a> ";
 echo " страница № " . ($page + 1);
 
 if ($found_links > ($page + 1) * $links_on_page) 
 echo " <a href='?page=" . ($page + 1) . "&query=$query&host={$host}'>следующая &#8594;</a> ";

}

require_once $rootpath.'incfiles/end.php';
.
Pillott, а зачем там Где ищем если выше есть сам адресс сайта ?
.
Enter нажат, к чему теперь рыданья…
Fublin, вверху сайт по умолчанию, а "где ищем" можно и убрать, то просто чтобы можно было искать по любому нужному сайту.
Всего: 35