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>


Вопрос:

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 15:45
10000 руб./за проект
23 апр. 2024, в 15:42
5000 руб./за проект
23 апр. 2024, в 15:34
10000 руб./за проект