2010-09-25 93 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()以確保它實際上是一個圖像。

希望這會有所幫助,如果它還不算太晚!