PHP - 从RSS源获取图像URL

时间:2011-10-13 23:29:38

标签: php function

我必须获取我从PHP中的RSS源获取的图像的URL(而不是链接)。我知道,如果我想获取其中一个Feed标题的链接(而不是url),我必须使用$feed->channel->item->link;但是如果我想获取Feed项的图像url(而不是链接)并插入它变成一个变量供以后使用?也许$feed->channel->image->url; - 我使用了这个,但没有任何作用。

这是我用来获取Feed的内容。

function get_google_image($image){
{        $intento=0;
         $imagealt=get_the_title(); //its wordpress
         $image=get_the_title();
                 $words = explode(" ", $image);
                 $imagetitle = implode(" ", array_splice($words, 0, 2));
                 $image = implode(" ", array_splice($words, 0, 2));
         $image=str_replace(" ","+",$image);
         while (!$feed=simplexml_load_file("http://obsrv.com/General/ImageFeed.aspx?'$image'")){
                 $attempt+=1;
                 if ($attempt>5) break;
                 print "Retry".$attempt."<br>";
                 }
                 $imagelink=$feed->channel->image->url; //Here is the problem, this variable finally gets empty and i want it to be the url of the image so i can post it with html later in the line below
                 echo '<img title="' . $imagetitle . '" alt="' . $imagealt . '" src="' . $imagelink . '"/>';
}}

Feed是http://obsrv.com/General/ImageFeed.aspx? (这里是带有图像搜索关键字的变量)我想从rss提要列表中获取第一个项目(第一个图像,因为每个rss帖子只有一个图像,并且还有一个图像作为附加到帖子的文件如果这有助于你帮助我)。所以我想得到这个图像并将url取出一个变量,然后我可以制作一个用于发布图像的HTML代码。

echo '<img title="' . $imagetitle . '" alt="' . $imagealt . '" src="' . $imagelink . '"/>';

1 个答案:

答案 0 :(得分:1)

您的代码中有几个问题:

  1. the help page,我可以看到您提供了错误的网址结构:

    "http://obsrv.com/General/ImageFeed.aspx?'$image'"
    

    应该是:

    "http://obsrv.com/General/ImageFeed.aspx?q=" . $image . ""
    
  2. 我认为代码中存在错误:

    首先,将$image设置为get_google_image($image)的函数参数 然后设置从wordpress的函数中取得的$image。我不知道这是不是你想要的方法。

  3. 此代码也有错误:

    $image=str_replace(" ","+",$image);
    

    我认为这就是你要找的东西:

    $image = urlencode($image);
    
  4. 另一个问题是,您向simplexml_load_file()提供了网址。

    更新:Phil指出如果启用了fopen HTTP包装,simplexml_load_file()可以使用URL。但是,如果它被禁用,您可以使用此代码作为解决方法:

    $raw_html = file_get_contents( "http://obsrv.com/General/ImageFeed.aspx?q=$image" );
    $feed=simplexml_load_string( $raw_html );