0

我正在使用 php。我无法让我的输出正常工作。我正在用 yql 抓取 html,所以我的 json 文件并不完全完美。例如,

{
 "td": [
  {
   "a": {
    "class": "audioPlayer",
    "href": "http://files.emfcdn.com/downloads/audio/hooks/3567.mp3",
    "img": {
     "border": "0",
     "class": "audioPlayer",
     "height": "22",
     "onmouseout": "this.src='/images/music/songplay-norm.jpg'",
     "onmouseover": "this.src='/images/music/songplay-over.jpg'",
     "src": "/images/music/songplay-norm.jpg",
     "width": "30"
    }
   }
  },
  {
   "p": "2."
  },
  {
   "img": {
    "alt": "Mandisa",
    "id": "ctl00_ctl00_cphMain_cphMiddleColumn_grdSongs_ctl03_imgAlbum",
    "src": "http://objects.klove.com/Common/Thumbnail.aspx?f=/art/albumart/1704.jpg&s=58&",
    "style": "border-width:0px;"
   }
  },
  {
   "a": {
    "href": "/music/artists/mandisa/songs/good-morning-(feat.-tobymac)-lyrics.aspx",
    "id": "ctl00_ctl00_cphMain_cphMiddleColumn_grdSongs_ctl03_hypTitle",
    "style": "font-weight:bold;",
    "content": "Good Morning (feat. tobyMac)"
   },
   "br": null,
   "p": {
    "a": {
     "href": "/music/artists/mandisa/",
     "id": "ctl00_ctl00_cphMain_cphMiddleColumn_grdSongs_ctl03_Hyperlink1",
     "content": "Mandisa"
    },
    "content": "by "
   }
  },
  {
   "p": "What If We Were Real"
  },
  {
   "style": "width:110px;",
   "a": {
    "href": "http://click.linksynergy.com/fs-bin/stat?id=SUbYnR25dhw&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Falbum%252Fid425892874%253Fi%253D425892890%2526uo%253D4%2526partnerId%253D30",
    "id": "ctl00_ctl00_cphMain_cphMiddleColumn_grdSongs_ctl03_hypItunes",
    "target": "_blank",
    "content": "iTunes"
   },
   "p": {
    "a": {
     "href": "http://www.amazon.com/exec/obidos/ASIN/B004SBW1LS/klr-20/ref=nosim/",
     "id": "ctl00_ctl00_cphMain_cphMiddleColumn_grdSongs_ctl03_hypAmazon",
     "target": "_blank",
     "content": "Amazon"
    },
    "content": "| "
   }
  }
 ]
}

,这是我从带有 yql 的网站上抓取的 html 中的项目之一。我想变回声,“如果我们是真实的”。但是 json 对象的标题是“p”,我不知道如何从中提取“如果我们是真实的会怎样”。

我试过了,

$albumname = $item->p

,但如您所见,列表中有多个“p”。任何帮助都会很棒。谢谢。

4

1 回答 1

1

当我遇到这样的怪物时,我做的第一件事就是这样做:

$estr = json_decode($str,TRUE);
echo "<pre>";
print_r($estr);
echo "</pre>";

那么很容易发现:

echo $estr["td"][4]["p"];
于 2012-06-11T19:15:51.023 回答