| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
PHP класс для работы с Яндекс.XML
Уже продолжительное время доступен сервис Яндекс.XML — сие есть не что иное, как поисковый сервис, который позволяет делать автоматические поисковые запросы к Яндексу и публиковать его ответы у себя на сайте и данный пост посвящен приручению сего зверя с использованием PHP. !: Данный пост есть развитие диалога в топике
habrahabr.ru/blogs/php/36932/ svn checkout yandex.googlecode.com/svn/trunk/ yandex-read-only Требования вполне приемлемые:
Приступим, для начала подключаем сам класс: require_once `Yandex.php`;Далее — нам необходимо забрать из реквеста поисковый запрос, номер страницы и сайт по которому будем искать (вполне вероятно Вам понадобится гораздо больше параметров, но будем считать это необходимым минимумом): // забираем «query», «page» и «host» с request`аТеперь непосредственно манипуляции с классом Yandex: if ($query) {
// создаем экземпляр класса Yandex
$Yandex = new Yandex();
$Yandex -> query($query) // устанавливаем поисковый запрос
-> host($host) // ограничиваемся поиском по сайту
-> page($page) // текущая страница
-> limit(10) // результатов на странице
-> set(`max-title-length`, 160) // тонкая настройка поисковой выдачи (см. http://code.google.com/p/yandex/source/browse/trunk/Yandex.php#48)
-> set(`max-passage-length`, 200)
-> request() // отправляем запрос
;
}
Если всё прошло гладко, то результат будет доступен в «$Yandex->result» — сие есть SimpleXML объект, ничем и никак не порезанный — дабы предоставить полную свободу действий для его обработки. Далее привожу пример вывода результатов поиска (HTML опущен): // проверяем всё ли гладко
if (isset($Yandex) && empty($Yandex->error)) :
// вот таким образом мы стучимся к результатам
foreach ($Yandex->result->response->results->grouping->group as $group) :
// вывод URL
echo $group->doc->url;
// вывод заголовка - метод Yandex::highlight выделяет поисковую фразу
Yandex::highlight($group->doc->title);
// выводим пассажи
foreach ($group->doc->passages->passage as $passage) :
Yandex::highlight($passage);
endforeach;
endforeach;
// далее выводим постраничную навигацию, она немного громоздка
foreach ($Yandex->pageBar() as $page => $value) :
// switch statement for $value[`type`]
switch ($value[`type`]) {
// ссылка на страничку
case `link`:
echo `<a href="`. $url .`&page=`. $page .`" title="Page `. ($page+1) .`">`. sprintf($value[`text`], $page+1) .`</a> | `;
break;
// текущая страница
case `current`:
echo sprintf($value[`text`], $page+1) .` | `;
break;
// текст разделителя - ".."
case `text`:
echo $value[`text`] .` | `;
break;
default:
break;
}
endforeach;
// если что-то не так - выводим ошибку
elseif(isset($Yandex) && isset($Yandex->error)):
echo $Yandex->error;
endif;
В данном примере используются конструкции ввида «if (..):… endif;», т.к. они наиболее подходят для шаблонизаторов с нативным PHP синтаксисом, для оборачивания сего в Smarty Вам понадобиться заасайнить $Yandex в шаблон и далее переделываем пример: // будет что-то типа:Разбирать сам класс по запчастям, я думаю, особо не стоит — кто знает PHP и так поймет — благо комментарии присутствуют, да и ничего военного в нем нет — все достаточно просто. Если же есть пожелания иль замечания — пишите — будем обсуждать… Попробывать скрипт на вкус можно на страничке http://yandex.hohli.com/ Источник: habrahabr Рубрика: PHP
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|