нужна маленькая помощь по XML

MoMM
На сайте с 16.06.2006
Offline
727
664

Уважаемые, требуется помощь зала.

Ситуация: есть магазин, который отдает XML по урлу pagename.php

В файле сотни позиций. Мне для промосайта надо вырывать оттуда 3-4 цены.

Формат отдачи такой:

- <offers>
- <offer id="2" available="true">
<url>http://ххх/product_info.php?products_id=2&</url>
<price>945</price>
<currencyId>RUR</currencyId>
<categoryId type="Own">4</categoryId>
<picture>http://ххх/image/product_image/info_image/2_0.jpg</picture>
<deliveryIncluded />
<name>название товара</name>
<vendor>имя производителя</vendor>
<description>описание товара.</description>
</offer>

Вопрос: Как составить запрос с промосайта (сайт на PHP) чтобы вырывать цены по ID товара ?

P
На сайте с 10.03.2008
Offline
168
#1

Если "на коленке":

<?php

$xml = file_get_contents('http://site.ru/pagename.php'); //УРЛ до xml
$id = 3; //ID товара
preg_match_all('/<offer\sid=\"'.$id.'\"(.*)<price>(.*)<\/price>/Usi', $xml, $offers);
echo $offers[2][0];
?>
MoMM
На сайте с 16.06.2006
Offline
727
#2
pistol:
Если "на коленке":

заработало, спасибо!

[Удален]
#3
<?

$xml = file_get_contents ( 'http://site.ru/pagename.php' );

$id = $_GET ['id'];
preg_match_all ( '/<offer\sid=\"' . $id . '\"(.*)<url>(.*)<\/url>(.*)<price>(.*)<\/price>(.*)<currencyId>(.*)<\/currencyId>(.*)<categoryId type=\"Own\">(.*)<\/categoryId>(.*)<picture>(.*)<\/picture>(.*)<name>(.*)<\/name>(.*)<vendor>(.*)<\/vendor>(.*)<description>(.*)<\/description>/Usi', $xml, $offers );

$url = $offers ['2'] ['0'];
$price = $offers ['4'] ['0'];
$currencyId = $offers ['6'] ['0'];
$categoryIdOwn = $offers ['8'] ['0'];
$picture = $offers ['10'] ['0'];
$name = $offers ['12'] ['0'];
$vendor = $offers ['14'] ['0'];
$description = $offers ['16'] ['0'];

echo 'id = ' . $id . '<br>';
echo 'url = ' . $url . '<br>';
echo 'price = ' . $price . '<br>';
echo 'currencyId = ' . $currencyId . '<br>';
echo 'categoryIdOwn = ' . $categoryIdOwn . '<br>';
echo 'picture = ' . $picture . '<br>';
echo 'name = ' . $name . '<br>';
echo 'vendor = ' . $vendor . '<br>';
echo 'description = ' . $description . '<br>';

?>

блин писал писал ((( но тоже работает ))

[Удален]
#4

ну можно и покрасивше и побыстрее и на будущее


$xml=simplexml_load_string(file_get_contents("http://site.ru/page.php"));

$ids=array('1','2','3'); //список нужных айди
$prices=array();

foreach($ids as $id)
{
$offer=$xml->xpath("//offer[@id='".$id."']");
$prices[$id]=$offer[0]->price;
}

массив $prices будет содержать цены с ключами по id

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий