Php 从XML获取图像URL

Php 从XML获取图像URL,php,xml,simplexml,Php,Xml,Simplexml,我使用下面的代码从响应XML获取$movie->id <?php $movie_name='Dabangg 2'; $url ='http://api.themoviedb.org/2.1/Movie.search/en/xml/accd3ddbbae37c0315fb5c8e19b815a5/%22Dabangg%202%22'; $xml = simplexml_load_file($url); $movies = $xml->movies

我使用下面的代码从响应XML获取$movie->id

<?php   
$movie_name='Dabangg 2';
        $url ='http://api.themoviedb.org/2.1/Movie.search/en/xml/accd3ddbbae37c0315fb5c8e19b815a5/%22Dabangg%202%22';

    $xml = simplexml_load_file($url);
    $movies = $xml->movies->movie;
   foreach ($movies as $movie){
        $arrMovie_id = $movie->id;
    }
电影->电影;
foreach($movies作为$movie){
$arrmoine\u id=$movie->id;
}
?>

响应xml结构是

如何使用thumb大小获取图像URL?

使用SimpleXmlElement的attributes()方法

例如:

$imageAttributes = $movie->images[0]->attributes();
$size = $imageAttributes['size'];

请参阅位于以下位置的文档:

请参阅以下内容,这是一种仅获取特定图像的简单方法

$xml = simplexml_load_file($url);
$images = $xml->xpath("//image");
//echo "<pre>";print_r($images);die;
foreach ($images as $image){
    if($image['size'] == "thumb"){      
        echo "URL:".$image['url']."<br/>";
        echo "SIZE:".$image['size']."<br/>";
        echo "<hr/>";
    }
}
$xml=simplexml\u加载文件($url);
$images=$xml->xpath(“//image”);
//回声“;打印(图像);死亡
foreach($images作为$image){
如果($image['size']==“thumb”){
回显“URL:.$image['URL']。”
; 回声“大小:.”图像['SIZE']。“
”; 回声“
”; } }
编辑:使用
size=“thumb”
type=“poster”
仅选择
URL
属性:

如果您只需要1个url,请执行以下操作:


正在工作的实时演示:

哪里定义了
$movie\u name
变量?@NullVoid现已添加。我发布的文件不是完整的代码,我错过了。所以请给出正确的URL,这样我们就可以得到正确的xml@NullVoid正确的XML是edited@Deonia:检查答案我必须在循环中使用它吗?我想你会想这样做的。是的。但我不知道你到底想做什么。我猜你会想在你的
foreach($movies as$movie){…}
循环中某处使用它。该示例仅获取第一个图像的属性。如果你想要所有的图像,你需要一个
foreach($movie->imagesas$image){…}
循环在你的movies循环中。并执行
$attributes=$image->attributes()$大小=$attributes['size']
获取每个图像的大小。当然
$attributes['url']也存在。因为它包含调用attributes()方法的元素的所有属性。除非您使用的是名称空间(不是名称空间),否则通常不需要
->attributes()
方法。您可以使用数组样式的访问,例如
$movie->images[0]['size']
谢谢它的工作。它呼应着所有的尺寸。如果我只想要拇指的尺寸呢。我想在数据库中保存URL。我还将为我将通过的每部电影循环播放。因为我已经发布了硬编码的电影。但在实际代码中,movie变量是带条件的arrayI编辑代码。要在数据库中保存,您需要启动insert查询。除非您使用的是名称空间(不是名称空间),否则通常不需要->attributes()方法。您可以只使用数组样式的访问,例如,
if($image['size']=='thumb')
每次加载带有电影名称的URL的xml文件时?那么没问题,你只需要用你想要的电影名称替换你的URL即可。@NullVoid好的,谢谢让我用insert查询测试一下。我只需要输入海报的类型和大小就可以了thumb@Deonia:那你为什么不在你的问题里写上呢?请参见编辑。
$urls = $xml->xpath("//image[@size='thumb' and @type='poster']/@url");
$url = (string)$xml->xpath("//image[@size='thumb' and @type='poster']/@url")[0];
echo $url;