从XML获取3个URL,随机选择一个保存到变量

时间:2013-05-05 23:03:35

标签: php xml tumblr

此时我已经过头了 - 但我目前看起来像这样:

<?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'};
?>

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

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

新代码:选择0到118(总共119)的随机图像,然后输出,选择最高分辨率。

<?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].'">';
?>

答案 1 :(得分: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;

答案 2 :(得分: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