2010-08-16 5 views
1

Im utilisant php et pie et souhaitant une manière générale de détecter des images dans un élément de fil. Je sais que certains sites Web placent des images dans l'étiquette d'enceinte, d'autres aiment ceci images[rss] et certains l'ajoutent simplement à la description. Y at-il quelqu'un avec une fonction générale pour détecter si l'élément rss a une image et extraire l'URL de l'image après avoir été analysé par la pie?Extraction d'images à partir de flux rss/atom à l'aide de la pie rss

Je pense que des expressions reqular seraient nécessaires pour extraire de la description mais im un noob à ceux. S'il vous plait aidez si vous le pouvez.

Répondre

4

J'ai passé des heures à chercher un moyen d'afficher des images en RSS via Magpie moi-même, et à la fin j'ai dû examiner le code pour comprendre comment le faire fonctionner. Comme vous le dites, la raison pour laquelle Magpie ne capte pas les images dans l'élément est qu'elles sont spécifiées à l'aide de la balise 'enclosure', qui est une balise vide dans laquelle les informations se trouvent dans les attributs, par ex.

<enclosure url="http://www.mysite.com/myphoto.jpg" length="14478" type="image/jpeg" /> 

En tant que hack pour que cela fonctionne rapidement pour moi j'ai ajouté les lignes de code suivantes dans rss_parse.inc:

function feed_start_element($p, $element, &$attrs) { 
    ... 
    if ($el == 'channel') 
    { 
     $this->inchannel = true; 
    } 
    ... 

    // START EDIT - add this elseif condition to the if ($el=xxx) statement. 
    // Checks if element is enclosure tag, and if so store the attribute values 
    elseif ($el == 'enclosure') { 
     if (isset($attrs['url'])) { 
     $this->current_item['enclosure_url'] = $attrs['url']; 
     $this->current_item['enclosure_type'] = $attrs['type']; 
     $this->current_item['enclosure_length'] = $attrs['length']; 
     } 
    } 
    // END EDIT 
    ... 
} 

L'URL de l'image est en $ myRSSitem [ 'enclosure_url' ] et la taille est dans $ myRSSitem ['enclosure_length']. Notez que les balises de boîtier peuvent faire référence à de nombreux types de média, donc vérifiez d'abord si le type est réellement une image en vérifiant $ myRSSitem ['enclosure_type']. Peut-être que quelqu'un d'autre a une meilleure suggestion et je suis sûr que cela pourrait être fait plus élégamment pour ramasser les attributs d'autres balises vides, mais j'avais besoin d'une solution rapide, mais j'espère que cela pourrait aider quelqu'un d'autre dans difficulté!

+0

Cette solution a parfaitement fonctionné pour ma propre situation désordonnée. Merci beaucoup. –

Questions connexes