Здравствуйте! Хочу спарсить в свой интернет-магазин товары с сайта поставщика. Можете пожалуйста показать на примере как это делается? допустим как добавить в свою базу данных название модели, цену, размер. как сохранить картинки на локальный сервер в определенную папку? (движок самописный у меня) xml файл - http://www.glem.com.ua/eshop/ym4.php и еще такой вопрос, на их сайте написано: Подключив импорт из xml вы получите: Новые позиции будут создаваться на вашем сайте автоматически. Позиции, закончившиеся на нашем складе (не осталось ни одного размера) автоматически скроются и на вашем сайте. Если эти позиции отошьются и опять появятся у нас на складе, то они автоматически появятся и у вас на сайте. как это все осуществляется? Заранее всем спасибо за ответы.
По первому вопросу. С массивами/объектами работать умеете? Вот один из простейших способов преобразовать XML в объект: Код (PHP): $xml = simplexml_load_file('http://www.glem.com.ua/eshop/ym4.php'); var_dump($xml); А по второму вопросу - я думаю, что описание API и работе с ним, у них должно быть в документации. Хотя, можно запускать сценарий получения данных и обновление своей базы по крону (периодичность уже сами подбираете).
Deonis, можете пожалуйста показать на примере как спарсить хотя-бы названия моделей и размеры? Опыт еще не такой большой в php у меня. С остальным я думаю разберусь.. тоже думал что скорей всего придется крон раз в сутки запускать..
Код (PHP): $xml = simplexml_load_file('http://www.glem.com.ua/eshop/ym4.php'); foreach($xml->shop->offers->offer as $offer) { echo $offer->name, ', размер: ', $offer->param[1], PHP_EOL; }
Подскажите пожалуйста, в xml есть строка: Код (Text): <description> <![CDATA[<p><strong>Состав<br /></strong>креп-шифон + вискоза.<br />Принт спереди, спинка белая. </p> <p><strong>Размерная сетка</strong></p> <table class="mceVisualAid" border="0"> <tbody> <tr> <td class="mceVisualAid" align="center"> </td> <td class="mceVisualAid" align="center">S</td> <td class="mceVisualAid" align="center">M</td> <td class="mceVisualAid" align="center">L</td> </tr> <tr> <td class="mceVisualAid" align="left">Обхват груди (см)</td> <td class="mceVisualAid" align="center">88</td> <td class="mceVisualAid" align="center">92</td> <td class="mceVisualAid" align="center">96</td> </tr> <tr> <td class="mceVisualAid" align="left">Обхват талии (см)</td> <td class="mceVisualAid" align="center">68</td> <td class="mceVisualAid" align="center">72</td> <td class="mceVisualAid" align="center">76</td> </tr> <tr> <td class="mceVisualAid" align="left">Обхват бедер (см)</td> <td class="mceVisualAid" align="center">96</td> <td class="mceVisualAid" align="center">100</td> <td class="mceVisualAid" align="center">104</td> </tr> </tbody> </table> <p> </p> <p>Длина изделия: 55 см. Для всех размеров.</p>]]> </description> как мне ее разделить на части? Тоесть состав, размерную сетку, длину просвоить к разным переменным.
Там HTML в XML, достань HTML $html = $xml->description и потом через DOM как и XML можно будет разобрать этот HTML.
Код (PHP): <?php $xmlstr =<<<XML <?xml version='1.0' standalone='yes'?> <description> <![CDATA[<p><strong>Состав<br /></strong>креп-шифон + вискоза.<br />Принт спереди, спинка белая. </p> <p><strong>Размерная сетка</strong></p> <table class="mceVisualAid" border="0"> <tbody> <tr> <td class="mceVisualAid" align="center"> </td> <td class="mceVisualAid" align="center">S</td> <td class="mceVisualAid" align="center">M</td> <td class="mceVisualAid" align="center">L</td> </tr> <tr> <td class="mceVisualAid" align="left">Обхват груди (см)</td> <td class="mceVisualAid" align="center">88</td> <td class="mceVisualAid" align="center">92</td> <td class="mceVisualAid" align="center">96</td> </tr> <tr> <td class="mceVisualAid" align="left">Обхват талии (см)</td> <td class="mceVisualAid" align="center">68</td> <td class="mceVisualAid" align="center">72</td> <td class="mceVisualAid" align="center">76</td> </tr> <tr> <td class="mceVisualAid" align="left">Обхват бедер (см)</td> <td class="mceVisualAid" align="center">96</td> <td class="mceVisualAid" align="center">100</td> <td class="mceVisualAid" align="center">104</td> </tr> </tbody> </table> <p> </p> <p>Длина изделия: 55 см. Для всех размеров.</p>]]> </description> XML; $html = simplexml_load_string($xmlstr); $doc = new DOMDocument(); $doc->loadHTML("<html><head><meta charset='UTF-8'></head><body>$html</body></html>"); $strong = $doc->getElementsByTagName('strong'); foreach ($strong as $tag) { echo $tag->nodeValue.'<br>'.PHP_EOL; } $tr = $doc->getElementsByTagName('tr'); foreach ($tr as $tag) { echo '<br>'.PHP_EOL; $td = $doc->getElementsByTagName('td'); foreach ($td as $tag) { echo $tag->nodeValue.', '; } }
У тебя проверенный рабочий код не работает. Переход на следующую итерацию цикла https://secure.php.net/manual/ru/control-structures.continue.php
у меня всё работает Код (PHP): foreach (array_fill(0, 10, 0) as $key => $value) { if ($key === 2) { continue; } echo "$key, "; } https://netbeans.org/kb/docs/php/debugging_ru.html http://phpfaq.ru/debug
Avensis до и после continue; выведи текст, по которому можно понять, где и когда какие данные у тебя. Смысл в том, чтобы ты полностью понимал как работает твоя программа.