На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Парсим xml отзывов яндекс маркета


Появилась как-то задача: вытащить информацию из xml-файла, который яндекс маркет выдает в ответ на запрос по поводу отзывов. Можно, конечно, воспользоваться имеющимися библиотеками, но если есть время и желание разобраться самому, то почему бы и не изобрести свой велосипед? Это не только интересно, но и полезно для развития навыков программирования. К тому же, оказалось все очень просто.

Итак, в каком виде поступает информация с отзывов? Структура такая (упрощенная, просто для наглядности отброшены другие элементы):

<?xml version="1.0" encoding="UTF-8"?>
<opinion-list>
<opinion id>комментарий</text><pro>достоинства</pro><contra>недостатки</contra><date>дата</date><author>автор</author></opinion>
<opinion id>комментарий</text><pro>достоинства</pro><contra>недостатки</contra><date>дата</date><author>автор</author></opinion>
</opinion-list>
Нам требуется написать такую функцию, которая бы извлекала информацию между определенными тэгами. То есть на вход она должна принимать тэг и текст. Стоп. Для начала нам надо получить этот текст, то есть выделить отельный отзыв. 4 строки кода сделают это:

$pos = strpos($data, "opinion id");
$data = substr($data, $pos);
$pos = strpos($data, "</opinion>");
$data = substr($data, 0, $pos);
Теперь мы имеем переменную $data, в которой только первый отзыв. Вот сейчас можно уже и запускать нашу функцию. Листинг:

function izv($txt, $tag) {
$pos = strpos($txt, $tag);
if ($pos===false){
return "no";	
}
else{
$txt = substr($txt, $pos+strlen($tag)+1);
$pos = strpos($txt, $tag);
$txt = substr($txt, 0, $pos-2);	
$txt = str_replace(PHP_EOL, "<br>", $txt);
return $txt;
}
}
Разберемся, что и где конкретно тут происходит. Сначала идет проверка. Зачем она нужна? Дело в том, что не каждый отзыв на яндекс маркете имеет все поля. Например, может не быть недостатков – в этом случае функция нам возвратит no. Если же все в порядке, такой тэг имеется, то идем разбирать дальше.

В строке мы отрезаем все, что идет до тэга включительно плюс один символ (попутно определяя длину самого тэга). После этого обрезаем все, что идет после закрывающего тэга минусом (точнее, получается, что плюсом) еще два символа. Особое внимание обратите на следующую строку: здесь мы заменяем на нормальные символы непонятные переносы. Зачем это нужно? Дело в том, что простом выводе ошибок может и не возникнуть, но вот если вы попытаетесь использовать для этой цели JavaScript, то могут появиться проблемы и данная строчка покажется вам совсем нелишней.

Собственно говоря, и все. Несложно, согласитесь? Можно проверить скрипт в «боевых» условиях – на том примере, который идет в самом яндекс маркете. Лично у меня все заработало :)

Если вам требуется написать скрипт на php, js или сделать любые работы по сайту, то вы всегда можете написать мне на почту up777up@yandex.ru илисразу же стучитесь в скайп up777up2 с описанием проблемы.




тегистатьи IT, яндекс, xml, парсинг





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Как узнать пароль пользователя на сайте на примере япа
Пошаговое руководство по верстке на вордпресс. Глава вторая: создаем скелет


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.