获取应用程序/ld+;使用php从外部url获取json

获取应用程序/ld+;使用php从外部url获取json,php,json,Php,Json,从这个应用程序/ld+json中,我想得到示例1.genre、2.director、3.dateCreated、4.duration、5.uploadDate <script type="application/ld+json">{ "@context": "http://schema.org", "@type": "Movie", "url": "/title/tt2293640/", "name": "Minions",

从这个应用程序/ld+json中,我想得到示例1.genre、2.director、3.dateCreated、4.duration、5.uploadDate

 <script type="application/ld+json">{
      "@context": "http://schema.org",
      "@type": "Movie",
      "url": "/title/tt2293640/",
      "name": "Minions",
      "image": "https://m.media-amazon.com/images/M/MV5BMTg2MTMyMzU0M15BMl5BanBnXkFtZTgwOTU3ODk4NTE@._V1_.jpg",
      "genre": [
        "Animation",
        "Action",
        "Adventure",
        "Comedy",
        "Family"
      ],
      "contentRating": "PG",
      "actor": [
        {
          "@type": "Person",
          "url": "/name/nm0000113/",
          "name": "Sandra Bullock"
        },
        {
          "@type": "Person",
          "url": "/name/nm0358316/",
          "name": "Jon Hamm"
        },
        {
          "@type": "Person",
          "url": "/name/nm0000474/",
          "name": "Michael Keaton"
        },
        {
          "@type": "Person",
          "url": "/name/nm1853544/",
          "name": "Pierre Coffin"
        }
      ],
      "director": [
        {
          "@type": "Person",
          "url": "/name/nm0049633/",
          "name": "Kyle Balda"
        },
        {
          "@type": "Person",
          "url": "/name/nm1853544/",
          "name": "Pierre Coffin"
        }
      ],
      "creator": [
        {
          "@type": "Person",
          "url": "/name/nm0528244/",
          "name": "Brian Lynch"
        },
        {
          "@type": "Organization",
          "url": "/company/co0221986/"
        },
        {
          "@type": "Organization",
          "url": "/company/co0005073/"
        }
      ],
      "description": "Minions is a movie starring Sandra Bullock, Jon Hamm, and Michael Keaton. Minions Stuart, Kevin, and Bob are recruited by Scarlet Overkill, a supervillain who, alongside her inventor husband Herb, hatches a plot to take over the...",
      "datePublished": "2015-06-17",
      "keywords": "minion,super villain,villain,invented language,teddy bear",
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingCount": 188589,
        "bestRating": "10.0",
        "worstRating": "1.0",
        "ratingValue": "6.4"
      },
      "review": {
        "@type": "Review",
        "itemReviewed": {
          "@type": "CreativeWork",
          "url": "/title/tt2293640/"
        },
        "author": {
          "@type": "Person",
          "name": "flint1961"
        },
        "dateCreated": "2015-06-27",
        "inLanguage": "English",
        "name": "Below par money spinner",
        "reviewBody": "I don\u0027t usually write reviews but this was such a disappointment that I felt I had to put something. Most of the good jokes were shown in the trailers, so if you\u0027ve seen the trailer then it\u0027s probably not worth the money. There were 3 of us watched this and although we all loved the despicable movies none of us enjoyed this. My son (11) said it felt like it was 2 hours long it was so boring. I can\u0027t really explain why it came across as so poor - but it just seemed really lazy and without Gru to play against the Minnions were just to simple. It was slapstick with no soul. The music although quite good didn\u0027t really seem to fit the film - just seemed to be tacked on at bit were they felt they should have a soundtrack and a famous song. Buy yourself a copy of despicable me and watch it again and again. Much better value for money! This just felt rushed, with loads of stock jokes, maybe hoping enough of them would hit the mark - they didn\u0027t.",
        "reviewRating": {
          "@type": "Rating",
          "worstRating": "1",
          "bestRating": "10",
          "ratingValue": "4"
        }
      },
      "duration": "PT1H31M",
      "trailer": {
        "@type": "VideoObject",
        "name": "Stuart \u0026 Dave",
        "embedUrl": "/video/imdb/vi996454425",
        "thumbnail": {
          "@type": "ImageObject",
          "contentUrl": "https://m.media-amazon.com/images/M/MV5BMTgxMzc2OTQwOV5BMl5BanBnXkFtZTgwODQ2OTgwNjE@._V1_.jpg"
        },
        "thumbnailUrl": "https://m.media-amazon.com/images/M/MV5BMTgxMzc2OTQwOV5BMl5BanBnXkFtZTgwODQ2OTgwNjE@._V1_.jpg",
        "description": "Watch an exclusive video for Minions.",
        "uploadDate": "2015-06-26T17:14:58Z"
      }
    }</script>

我想从这段php代码中得到1.genre、2.director、3.dateCreated、4.duration、5.uploadDate from JSON(application/ld+JSON),我如何做到这一点?一些帮助谢谢您。

您将JSON数据转换为HTML页面。 所以你必须 1) 仅检索JSON数据 2) 解析JSON并对其进行处理

$id = 'tt0159365' ; // example id
$c = file_get_contents("https://www.imdb.com/title/$id");

// retrieve the JSON data
$d = new DomDocument();
@$d->loadHTML($c);

// parse the HTML to retrieve the "ld+json" only
$xp = new domxpath($d);
$jsonScripts = $xp->query( '//script[@type="application/ld+json"]' );
$json = trim( $jsonScripts->item(0)->nodeValue ); // get the first script only (it should be unique anyway)

// decode the JSON string we find into a associative array
$data = json_decode( $json, true );

// you can now use this array to query the data you want
$duration = $data['duration'];
echo "Duration: $duration" ;

$director = $data['director']['name'] ;
echo "Director : $director" ;

将JSON数据导入HTML页面。 所以你必须 1) 仅检索JSON数据 2) 解析JSON并对其进行处理

$id = 'tt0159365' ; // example id
$c = file_get_contents("https://www.imdb.com/title/$id");

// retrieve the JSON data
$d = new DomDocument();
@$d->loadHTML($c);

// parse the HTML to retrieve the "ld+json" only
$xp = new domxpath($d);
$jsonScripts = $xp->query( '//script[@type="application/ld+json"]' );
$json = trim( $jsonScripts->item(0)->nodeValue ); // get the first script only (it should be unique anyway)

// decode the JSON string we find into a associative array
$data = json_decode( $json, true );

// you can now use this array to query the data you want
$duration = $data['duration'];
echo "Duration: $duration" ;

$director = $data['director']['name'] ;
echo "Director : $director" ;


您是要在客户端获取JS/jQuery中的值,还是在服务器端获取PHP代码?如果是后者,“javascript”和“jquery”标记似乎不相关,我试图从
application/ld+json
使用php代码获取示例
“duration”:“PT1H31M”
,这样我就得到了meta标记,但我想从
application/ld+json
获取一些信息,非常感谢您的帮助,您能展示一下示例吗,要得到的(期限)只有那个,非常感谢mouch@Emma我现在就这样尝试了,
foreach($xp->query(//script[@type='application/ld+json'])作为$du{$duration=$du->getAttribute(“duration”);
但不起作用!感谢您的帮助,但不起作用!您是想在客户端获取JS/jQuery中的值,还是想在服务器端获取PHP代码?如果是后者,“javascript”和“jQuery”标记似乎无关紧要。我想获取示例
“duration”:“PT1H31M”
,来自
application/ld+json
,使用该php代码,因此我得到了meta标记,但我想从
application/ld+json
中获得一些信息,非常感谢您的帮助,您能举个例子,仅获取(持续时间)表示非常感谢mouch@Emma我现在就这样尝试
foreach($xp->query(//脚本[@type='application/ld+json']”作为$du){$duration=$du->getAttribute(“duration”)
但不起作用!谢谢你的帮助,但不起作用!谢谢你的帮助,
duration
正在使用此代码,但是
director,dateCreated and genre
不起作用!你能帮我解决这个问题吗?再次谢谢。如果你能帮我获得
dateCreated
谢谢
$data['review'[/dateCreated']
您可以使用
打印($data)
对数据树有一个全球视野我非常感谢你的帮助。谢谢你的帮助,
duration
正在使用此代码,但是
dateCreated and genre主管
不起作用!你能帮我解决这个问题吗?再次感谢。如果你能帮我获得
dateCreated
谢谢
$data['review']['dateCreated']
您可以使用
打印($data);
对数据树有一个全局视图,非常感谢您的帮助。