PHP Simple XML访问图像URL元素值

时间:2019-02-06 09:59:53

标签: php xml rss simplexml

我正在编写一个PHP脚本来获取rss的新提要并显示,使用php simplexml_load_file我设法显示了提要的大部分内容,

但无法访问图像链接。

我的代码在这里

      $url = "https://www.nu.nl/rss/Algemeen";       
             $feeds = simplexml_load_file($url);
             foreach ($feeds->channel->item as $item) {

                        $title = $item->title;
                        $link = $item->link;
                        $description = $item->description;
                        $postDate = $item->pubDate;
//to get the image

$imageurl = $item->enclosure->url;

    //example output

    echo "<h3 class='rstitle'>$title</h3><div class='rscont'>$description<div>";

        }

但是图像属性位于另一个级别

xml var_dump的示例部分

object(SimpleXMLElement)#1 (2) {
  ["@attributes"]=>
  array(1) {
    ["version"]=>
    string(3) "2.0"
  }
  ["channel"]=>
  object(SimpleXMLElement)#2 (8) {
    ["title"]=>
    string(13) "NU - Algemeen"
    ["link"]=>
    string(26) "https://www.nu.nl/algemeen"
    ["description"]=>
    string(37) "Het laatste nieuws het eerst op NU.nl"
    ["language"]=>
    string(5) "nl-nl"
    ["copyright"]=>
    string(22) "Copyright (c) 2019, NU"
    ["lastBuildDate"]=>
    string(31) "Wed, 06 Feb 2019 10:41:00 +0100"
    ["ttl"]=>
    string(2) "60"
    ["item"]=>
    array(10) {
      [0]=>
      object(SimpleXMLElement)#3 (7) {
        ["title"]=>
        string(74) "747.000 Nederlanders in laatste vijf jaar slachtoffer van huiselijk geweld"
        ["link"]=>
        string(115) "https://www.nu.nl/binnenland/5726055/747000-nederlanders-in-laatste-vijf-jaar-slachtoffer-van-huiselijk-geweld.html"
        ["description"]=>
        string(216) "In totaal 747.000 volwassen Nederlanders zijn in de afgelopen vijf jaar minstens één keer slachtoffer geweest van huiselijk geweld. Daarnaast krijgen jaarlijks 90.000 tot 127.000 kinderen te maken met mishandeling."
        ["pubDate"]=>
        string(31) "Wed, 06 Feb 2019 10:21:36 +0100"
        ["guid"]=>
        string(28) "https://www.nu.nl/-/5726055/"
        ["enclosure"]=>
        object(SimpleXMLElement)#13 (1) {
          ["@attributes"]=>
          array(3) {
            ["url"]=>
            string(123) "https://media.nu.nl/m/m1nx2k0a3l3q_sqr256.jpg/747000-nederlanders-in-laatste-vijf-jaar-slachtoffer-van-huiselijk-geweld.jpg"
            ["length"]=>
            string(1) "0"
            ["type"]=>
            string(10) "image/jpeg"
          }
        }
        ["category"]=>
        array(2) {
          [0]=>
          string(8) "Algemeen"
          [1]=>
          string(10) "Binnenland"
        }
      }
      [1]=>
      object(SimpleXMLElement)#4 (7) {
        ["title"]=>
        string(68) "FvD en DENK willen in alle provincies meedoen aan Statenverkiezingen"
        ["link"]=>
        string(108) "https://www.nu.nl/algemeen/5726574/fvd-en-denk-willen-in-alle-provincies-meedoen-aan-statenverkiezingen.html"
        ["description"]=>
        string(206) "Forum voor Democratie (FvD) en DENK willen in alle twaalf provincies meedoen aan de Provinciale Statenverkiezingen op 20 maart. De Kiesraad heeft woensdag bekendgemaakt welke partijen zich hebben aangemeld."
        ["pubDate"]=>
        string(31) "Wed, 06 Feb 2019 10:41:00 +0100"
        ["guid"]=>
        string(28) "https://www.nu.nl/-/5726574/"
        ["enclosure"]=>
        object(SimpleXMLElement)#13 (1) {
          ["@attributes"]=>
          array(3) {
            ["url"]=>
            string(118) "https://media.nu.nl/m/k82xoojacd24_sqr256.jpg/fvd-en-denk-willen-in-alle-provincies-meedoen-aan-statenverkiezingen.jpg"
            ["length"]=>
            string(1) "0"
            ["type"]=>
            string(10) "image/jpeg"
          }
        }
        ["category"]=>
        array(2) {
          [0]=>
          string(8) "Algemeen"
          [1]=>
          string(8) "Politiek"
        }
      }
      [2]=>

我尝试通过$item->enclosure->url;访问图片网址,但返回空数组

任何人都可以帮助我获取图片网址,谢谢

1 个答案:

答案 0 :(得分:2)

$item->enclosure['url']

:)

属性由数组访问器访问

您也可以尝试使用xpath

$item->xpath('enclosure/@url')[0]

干杯!