Я пытаюсь проанализировать xml, но у меня проблема, когда я пытаюсь извлечь URL-адрес изображения.
Мой xml:
<entry> <title>The Title</title> <id>http://example.com/post/367327.html</id> <summary>Some extra text</summary> <link rel="enclosure" href="http://example.com/photos/f_0px_30px/image687.jpg" type="image/jpeg" length="" /> </entry>
До сих пор я использую следующий код для получения других данных:
$url = "http://msdssite.com/feeds/xml/myxml.xml"; $xml = simplexml_load_file($url); foreach($xml->entry as $PRODUCT) { $my_title = trim($PRODUCT->title); $url = trim($PRODUCT->id); $myimg = $PRODUCT->link; }
Как я могу проанализировать href
из этого: <link rel="enclosure" href="http://example.com/photos/f_0px_30px/image687.jpg" type="image/jpeg" length="" />
Поскольку кажется, что ваши записи могут содержать несколько тегов link
, вам нужно убедиться, что атрибут type
имеет значение image/jpeg
, чтобы получить ссылку на изображение:
ini_set("display_errors", "On"); $feedURL = 'http://OLDpost.gr/feeds/xml/category-takhs-xatzhs.xml'; $feed = simplexml_load_file($feedURL); $results = array(); foreach($feed->entry as $entry) { $result = array('title' => (string)$entry->title, 'url' => (string)$entry->id); $links = $entry->link; foreach ($links as $link) { $linkAttr = $link->attributes(); if (isset($linkAttr['type']) && $linkAttr['type']=='image/jpeg') { $result['img'] = (string)$linkAttr['href']; break; } } $results[] = $result; } print_r($results);
Обратите внимание, что использование simplexml, подобного этому (цикл foreach, чтобы найти хороший тег ссылки) не очень удобно. Лучше использовать запрос XPath:
foreach($feed->entry as $entry) { $entry->registerXPathNamespace('e', 'http://www.w3.org/2005/Atom'); $results[] = array( 'title' => (string)$entry->title, 'url' => (string)$entry->id, 'img' => (string)$entry->xpath('e:link[@type="image/jpeg"]/@href')[0][0] ); }
Если это точный XML, на самом деле нет необходимости в foreach. Попробуй это:
$xml = simplexml_load_file($url); $my_title = (string) $xml->title; $myimg = (string) $xml->link->attributes()['href']; // 5.4 or above echo $myimg; // http://example.com/photos/f_0px_30px/image687.jpg
Пытаться:
foreach($xml->entry as $PRODUCT) { $my_title = trim($PRODUCT->title[0]); $url = trim($PRODUCT->id[0]); $myimg = $PRODUCT->link[0]; }