Как вывести данные с get contents?
Пытаюсь вывести данные из ссылки, данные приходят в следующем формате:
<datastructure xmlns="////" xmlns:xs="http://urlblabla" xmlns:xsi="http://url">
<product_name>Ноутбук </product_name>
</datastructure>
Пытаюсь выловить и засунуть в переменную следующим образом:
$data = file_get_contents($url, false, $context);
print_r($data); //тут всё ок, выводит
?>
<?php preg_match("/<product_name>(.*)<\/product_name>/",$data,$product_name);
$product_name = strip_tags($product_name[0]);
?>
<div>Product name: <?=$product_name?></div>
Где моя ошибка, подскажите пожалуйста
Ответы (1 шт):
Автор решения: pgood
→ Ссылка
Если вы обрабатываете XML-данные, то лучше использовать специализированные библиотеки, например DOM или SimpleXML. Приведу пример, как достать данные из DOM с помощью XPath
<?php
$data = file_get_contents($url, false, $context);
$dd = new DOMDocument();
$dd->loadXML($data);
$xp = new DOMXpath($dd);
// в случае вашего XML,
// есть пространство имен по умолчанию xmlns="////",
// поэтому его надо учитывать
$xp->registerNamespace('ns','////');
?>
<div>Product name: <?= $xp->evaluate('string(//ns:product_name)'); ?></div>
Р.S. Если данные в utf-8 лучше использовать mb_ereg вместо preg_match