Yandex.XML получение данных на php (POST)
Пример работы с Yandex.XML через php. Данные отправляются POST запросом.
Необходимо прописать свои данные для работы, такие как имя пользователя, ключ доступа, регион, результатов на странице и т.п.
В примере получение данных для региона Москва, 100 результатов на странице. Запрос получаем через get, query=текст
header("Content-type: text/xml");
function getResponse ($xml_data)
{
$user = "yandex_user_name";
$key = "00000000000000000";
$filter = "strict";
$lr = "213";
$l10n = "ru";
$page = "0"
// Поисковый запрос к Яндексу
$query = $_GET["query"];
$yandex = "https://yandex.ru/search/xml" .
"?user=" . $user .
"&key=" . $key .
"&filter=" . $filter .
"&lr=" . $lr .
"&l10n=" . $l10n;
$ch = curl_init($yandex);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (!isset($response))
return null;
return $response;
}
$xw = xmlwriter_open_memory();
xmlwriter_set_indent($xw, 1);
$res = xmlwriter_set_indent_string($xw, ' ');
xmlwriter_start_document($xw, '1.0', 'UTF-8');
// Первый элемент request
xmlwriter_start_element($xw, 'request');
// Дочерний элемент query
xmlwriter_start_element($xw, 'query');
xmlwriter_text($xw, $query);
xmlwriter_end_element($xw);
// page = 0
xmlwriter_start_element($xw, 'page');
xmlwriter_text($xw, $page);
xmlwriter_end_element($xw);
// maxpassages = 3
xmlwriter_start_element($xw, 'maxpassages');
xmlwriter_text($xw, "3");
xmlwriter_end_element($xw);
// sortby = rlv
xmlwriter_start_element($xw, 'sortby');
xmlwriter_text($xw, 'rlv');
xmlwriter_end_element($xw);
// Дочерний элемент groupings
xmlwriter_start_element($xw, 'groupings');
// Дочерний элемент groupby
xmlwriter_start_element($xw, 'groupby');
// attr = ""
xmlwriter_start_attribute($xw, 'attr');
xmlwriter_text($xw, '');
xmlwriter_end_attribute($xw);
// mode = flat
xmlwriter_start_attribute($xw, 'mode');
xmlwriter_text($xw, 'flat');
xmlwriter_end_attribute($xw);
// groups-on-page = 100
xmlwriter_start_attribute($xw, 'groups-on-page');
xmlwriter_text($xw, '100');
xmlwriter_end_attribute($xw);
// docs-in-group = 1
xmlwriter_start_attribute($xw, 'docs-in-group');
xmlwriter_text($xw, '1');
xmlwriter_end_attribute($xw);
// groupby
xmlwriter_end_element($xw);
// groupings
xmlwriter_end_element($xw);
xmlwriter_end_document($xw);
$xml_data = xmlwriter_output_memory($xw);
echo getResponse ($xml_data);