2013-05-05 24 views
0

我在这一点上我在我的头 - 但我有什么目前看起来是这样的:得到3个网址,随机选择一个保存到变量

<?php 
    $request_url = "http://aethereverywhere.tumblr.com/api/read?type=photo&tagged=ae&start=0&num=1"; 
    $xml = simplexml_load_file($request_url); 
    $img = $xml->posts->post->{'photo-url'}; 
?> 

如果增加& NUM 3,可以说 - 它会提取三个文件,而simplexml_load_file会将它们解析出来 - 并将它们保存到$ img--但我想只有一个URL保存到$ img,随机选择。

感谢您的帮助

+0

如果你开始在一个随机数,并限制为1会为你 – 2013-05-05 23:07:44

+0

,工作是有一个原因你'使用v1 API吗? – Anujan 2013-05-05 23:57:22

+0

我使用的是v1 API,因为它是我可以让我的头部 - 我不幸与v2运气不幸。 – TannerMoore 2013-05-06 00:05:57

回答

2

新的代码:从0到118(总119)选择一个随机图像,然后outputing,选择的最高分辨率。

<?php 
    $request_url = "http://aethereverywhere.tumblr.com/api/read?type=photo&start=".rand(0,118); 
    $xml = simplexml_load_file($request_url); 
    $img = $xml->posts->post->{'photo-url'}; 
    $img=(array)$img; 

    echo '<img src="'.$img[0].'">'; 
?> 
+0

这对我来说更有意义 - 但不起作用:即使我设置了num = 20,它每次只返回相同的单个URL - 我认为这可能与simplexml_load_file一次只能接受一个以上的帖子无关吗? – TannerMoore 2013-05-05 23:38:11

+0

你在一个共享的网络托管? 'simplexml_load_file'可能被阻塞,这在我的本地机器上正常工作。 – 2013-05-05 23:39:38

+0

我没有收到错误消息 - 它解析并显示一个URL,但每次都是一样的。 – TannerMoore 2013-05-05 23:45:18

0

添加0到总照片-1之间的随机数。即随机获得一行。

$img = $xml->posts->post->{'photo-url'}[$random] // if that's the right syntax. 

或者在迭代标签时,对偶数/奇数进行随机检查。

$img = (empty($img) || !$img) ? (rand(10)%2==0) ? $PHOTO_URL : FALSE : $img; 
+0

我不确定我遵循 - 我不确定如何引入一个随机数。 – TannerMoore 2013-05-05 23:31:14

+0

结帐 - http://php.net/manual/en/function.rand.php。它的语法相当简单 - rand($ min,$ max)。使$ min = 0和$ max =总photo-url标签-1 – A23 2013-05-05 23:34:18

0

做这样的:

$xml = simplexml_load_string($x); // assuming XML in $x, or use simplexml_load_file 
$urls = $xml->xpath("//photo-url"); // get all <photo-url> nodes 

echo $urls[rand(0,count($urls)-1)]; // echo a random url 

看到它的工作:http://codepad.viper-7.com/WDq0ha