iborisbelov
@iborisbelov
Веб-дизайнер, UX\UI

Как настроить парсер на XML выгрузку?

Задача:

Есть выгрузка export.admitad.com/ru/webmaster/websites/401730/pr...

Она выдает информацию в таком виде
<offer available="true" id="33697" type="vendor.model">
	<categoryId>26</categoryId>
	<currencyId>RUR</currencyId>
	<delivery>true</delivery>
	<description>Кожа, текстиль, резина</description>
	<manufacturer_warranty>true</manufacturer_warranty>
	<model>Кроссовки Puma Suede Big Sean</model>
	<modified_time>1525468937</modified_time>
	<name>Кроссовки Puma Suede Big Sean</name>
	<param name="Цвет">Серый</param>
	<param name="Размеры" unit="UK">7;7.5;8;8.5;9;9.5;10;10.5;11</param>
	<param name="Пол">Мужской</param>
	<pickup>true</pickup>
	<picture>https://www.basketshop.ru/files/catalog/33697/36625101(9).JPG</picture>
	<picture>https://www.basketshop.ru/files/catalog/33697/36625101(10).JPG</picture>
	<picture>https://www.basketshop.ru/files/catalog/33697/36625101(11).JPG</picture>
	<picture>https://www.basketshop.ru/files/catalog/33697/36625101(7).JPG</picture>
	<picture>https://www.basketshop.ru/files/catalog/33697/36625101(6).JPG</picture>
	<price>7490</price>
	<sales_notes>Предоплата или оплата наличными</sales_notes>
	<store>true</store>
	<url>https://ad.admitad.com/g/c36ced07fc3562130ecba5b05e1dda/?i=5&amp;ulp=https%3A%2F%2Fwww.basketshop.ru%2Fcatalog%2Fitem%2F33697%2F</url>
	<vendor>Puma</vendor>
	<vendorCode>36625101</vendorCode>
</offer>


У каждого товара есть артикул(он уникальный и дается производителем. Почти все продавцы их придерживаются и дают их в выгрузке. Он так и называется 36625101
Надо вывести название товара, цену, и ссылку на товар.

Сейчас парсер просто ищет контент по заданным параметрам по определенной позиции:

<?php
include 'simple_html_dom.php'; 
//откуда будем парсить информацию
 $content = file_get_contents('http://export.admitad.com/ru/webmaster/websites/401730/products/export_adv_products/?user=solefinder&code=e867f6a1d2&feed_id=13560&format=xml');
// Определяем позицию строки, до которой нужно все отрезать
 $pos = strpos($content, '<offer available="true" id="33697" type="vendor.model">');
//Отрезаем все, что идет до нужной нам позиции
 $content = substr($content, $pos);
// Точно таким же образом находим позицию конечной строки
 $pos = strpos($content, '</offer>');
// Отрезаем нужное количество символов от нулевого
 $content = substr($content, 0, $pos);
//если в тексте встречается текст, который нам не нужен, вырезаем его
 $content = str_replace('','', $content);
// выводим спарсенный текст.
 echo $content;
 ?>


Как я это вижу:

Берем артикул товара например 36625101
Далее смотрим в наличии он или нет (параметр: )
Если в наличии то выводим название и цену Должно получиться

<div class="item clearfix">
<div class="img-wrap"><img src="<?php echo $picture; ?>" alt=""></div> <!-- изображение товара -->
<div class="title-link"><div class="title"><?php echo $name; ?></div></div> <!-- наименование товара -->
<div class="price-wrapper"><?php echo $price;?> ₽</div>  <!-- цена товара -->
<div class="btn-wrap"><a href="<?php echo $url; ?>">Купить</a> <!-- ссылка на товар товара -->
</div>
</div>


Вопрос:

Как вначале сделать поиск по артикулу, исходя из этого артикула вывести уже информацию по позиции?
  • Вопрос задан
  • 399 просмотров
Решения вопроса 1
@Yan-s
Эээ используйте XML парсер

php.net/manual/en/refs.xml.php
https://www.w3schools.com/PHP/php_xml_simplexml_re...

XML - специально размеченные данные чтобы их можно было легко разбирать, манипулировать ими. Для этого есть множество библиотек, не надо с XML как со строкой работать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы