2010-09-25 63 views
0

我花了一段时间试图解决这个问题,这是远远的我得到了。基本上即时通讯试图从RSS提要拉图像。我使用鹊处理饲料如下所示..这个片段是一类RSS提要和图像提取indepth

function getImagesUrl($str) { 
    $a = array(); 
    $pos = 0; 
    $topos; 
    $init = 1; 

    while($init) { 
     $pos = strpos($str, "img", $pos); 
     if($pos != FALSE) { 
      $topos = strpos($str, ">", $pos); 
      $imagetag = substr($str, $pos, ($topos - $pos)); 
      $url = $this->getImageUrl($imagetag); 
      $pos = $topos; 
      array_push($a, $url); 
     } 
     else { 
      $init = 0; 
     } 
    } 
    return $a; 
} 


/* 
* get the full url inside src atribute in <img> 
*/ 
function getImageUrl($image) { 
    $p = strpos($image, "src=", 0); 
    $p+= 5; // remove o src=" 
    $tp = strpos($image, '" ', $p); 
    $str = substr($image, $p, ($tp - $p)); 
    return $str; 
}     

使用上述功能...我打电话给他们这样内...迄今这个输出数据我将粘贴后来

  @$rss = fetch_rss($rsso->url); 
      if (@$rss) 
       { 
       $items=$rss->items; 
        foreach ($items as $item) 
        { 
        if (isset($item['title'])&&isset($item['description'])) 
         { 
        $hash=md5($this->es($item['title']).$this->es($item['description'])); 
        $content = $item['content']; 
        foreach($content as $c) { 
         // get the images on content 
         $arr = $this->getImagesUrl($c); 
         print_r($arr); 
         } 

这里是输出

1. Array ([0] => 
    http://api.tweetmeme.com/imagebutton.gif?url=http://mashable.com/2010/09/25/trailmeme/ 
    [1] => 
    http://cdn.mashable.com/wp-content/plugins/wp-digg-this/i/gbuzz-feed.png 
    [2] => 
    http://mashable.com/wp-content/plugins/wp-digg-this/i/fb.jpg 
    [3] => 
    http://mashable.com/wp-content/plugins/wp-digg-this/i/diggme.png 
    [4] => 
    http://ec.mashable.com/wp-content/uploads/2009/01/bizspark2.gif 
    [5] => 
    http://cdn.mashable.com/wp-content/uploads/2010/09/web.png 
    [6] => 
    http://mashable.com/wp-content/uploads/2010/09/Screen-shot-2010-09-24-at-10.51.26-PM.png 
    [7] => 
    http://cdn.mashable.com/wp-content/uploads/2009/02/bizspark.jpg 
    [8] => 
    http://feedads.g.doubleclick.net/~at/lxx00QTjYBaYojpnpnTa6MXUmh4/0/di 
    [9] => [10] => 
    http://feedads.g.doubleclick.net/~at/lxx00QTjYBaYojpnpnTa6MXUmh4/1/di 
    [11] => [12] => 
    http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:D7DqB2pKExk [13] => [14] => 
    http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:V_sGLiPBpWU [15] => [16] => 
    http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:F7zBnMyn0Lo [17] => [18] => 
    http://feeds.feedburner.com/~ff/Mashable?d=qj6IDK7rITs 
    [19] => [20] => 
    http://feeds.feedburner.com/~ff/Mashable?d=_e0tkf89iUM 
    [21] => [22] => 
    http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:gIN9vFwOqvQ [23] => [24] => 
    http://feeds.feedburner.com/~ff/Mashable?d=yIl2AUoC8zA 
    [25] => [26] => 
    http://feeds.feedburner.com/~ff/Mashable?d=P0ZAIrC63Ok 
    [27] => [28] => 
    http://feeds.feedburner.com/~ff/Mashable?d=I9og5sOYxJI 
    [29] => [30] => 
    http://feeds.feedburner.com/~ff/Mashable?d=CC-BsrAYo0A 
    [31] => [32] => 
    http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:_cyp7NeR2Rw [33] => [34] => 
    http://feeds.feedburner.com/~r/Mashable/~4/0N_mvMwPHYk 
    ) 

的例子有什么办法可以过滤掉图像的正确网址是什么?例如....我想脱去“jpg,png,gif”等扩展名的网址。其次,我想用例如bizspark,digg,facebook,tweet,twitter等废除网址。任何人发现任何内容更简单的方法呢?请帮我

回答

0

我张贴的答案,你的相关的问题在这里: Pulling Images from rss/atom feeds using magpie rss

为这个问题的答案适用于您上面的代码中,首先进行更改rss_parse.inc按我以前的答案。然后,您可以通过喜鹊简单地访问图像网址(而不必编写任何额外的功能),例如

// Your code 
@$rss = fetch_rss($rsso->url); 
if (@$rss) 
{ 
    $items=$rss->items; 
    foreach ($items as $item) 
    { 
     if (isset($item['title'])&&isset($item['description'])) 
     { 
     // START MY EDIT 
     if (isset($item['enclosure_type']) && isset($item['enclosure_url'])){ 
      switch ($item['enclosure_type']){ 
       case "image/gif": 
       case "image/jpeg": 
       case "image/png": 
        $image_url=$item['enclosure_url']; 
        $image_length=$item['enclosure_length']; 
        break; 
      } 
     } 
     //END MY EDIT 
     } 
    } 
} 

就是这样!你只需要使用$ image_url var来显示你的图像(在img标签当然:-)

我只检查了上面代码中的jpg,gif和png图像,因为它们是最流行的,但如果需要,您可以将其他MIME类型添加到交换机。请注意,机箱类型由RSS源的创建者设置,不能从文件读取,因此可能不准确。您可能想要在图像文件本身上使用exif_imagetype()以确保它实际上是一个图像。

希望这会有所帮助,如果它还不算太晚!