当前位置: 首页 > 知识库问答 >
问题:

PHP简单XML访问图像url元素值

金何平
2023-03-14

我正在写一个PHP脚本来获取rss新提要并显示,使用phpsimplexml_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变量转储的示例部分

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-访问图像url

谁能帮我得到图片的网址,谢谢


共有1个答案

贺俊材
2023-03-14
$item->enclosure['url']

:)

属性由数组访问器访问

您也可以尝试xpath

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

干杯

 类似资料:
  • 问题内容: 嗨,什么是计算XML文件中元素数量的最佳方法?就我而言,我想计算标签“ OfferNameList”中名称为“ OfferName”的XML标签的数量。 下面的XML包含在php变量$ offers中 谢谢您的帮助 问题答案: 与您可以使用 仅 计算 所有OfferName元素 。是的属性。 要计算 OfferNameList中的所有OfferName元素 ,可以使用 请注意,由于XP

  • 问题内容: 我是AngularJS的新手,怀疑我没有掌握一个概念。我也在使用Twitter Bootstrap,并且加载了jQuery。 工作流程:用户单击列表中的链接,“主”部分被更新,并且链接用户单击了活动类。 基本HTML标记: 在jQuery中执行此操作: 但是我无法弄清楚如何集成Angular和jQuery以完成此操作,因为我正在使用Angular从服务器获取主列表(以JSON形式)并更

  • 问题内容: 我有一个要从ExtJS界面发布到PHP的JSON对象。我从那里得到物体 该对象将包含3个数组,我可以查看是否 我需要获取每个数组并从中构建SQL查询。我的第一个障碍是将数组移出对象,尽管这可能是不必要的。这是我正在使用的代码块: 我没有正确创建数组。我也尝试过 那也不行。我确定我在这里容易错过一些事情。同样,这可能是不必要的,因为我可能可以直接访问它们。我需要通过遍历数组并将每个键附加

  • 问题内容: 我正在从URL获取天气信息。 我得到的是: 如何访问所需的任何元素? 如果我这样做:我收到错误消息: 字符串索引必须是整数,而不是str。 问题答案: 您从url中获得的是一个json字符串。而且您不能直接用索引解析它。您应该将其转换为dict ,然后可以使用index对其进行解析。 与其使用中间方式将其保存到内存,然后将其读取为,不如直接从文件中加载它:

  • [ ]操作符可以对向量进行读和写,这和apstring访问字符类似。同样和apstring一样,索引从0开始,count[ 0 ]指的是向量中的第0个元素,count[ 1 ]指的是向量中的第1个元素。[ ]操作符可以应用在任何表达式中。 count[0] = 7; count[1] = count[0] * 2; count[2]++; count[3] -= 60; 所有的这些语句都是合法的

  • 我正在尝试在: 我从java代码中设置了如下键: 我也尝试了内部的没有工作。如何在布局元素之外的中引用MDC键? 我还在properties部分下为键指定了默认值,如下所示: