Posted on

RSS内の画像を取得する

RSSで記事一覧を取得する際に画像を一緒に取得して欲しいという要望があったのでこんな形で取ってみました。

  1. $rssurl = "http://xxxxxx.xml";  
  2. $xml_data = file_get_contents($rssurl);  
  3. $rssdata = XML_unserialize($xml_data);  
  4. foreach ($rssdata['rss']['channel']['item'as $val){  
  5. // リンクのURLを見に行って最初に現れる画像のsrc取得  
  6. $url = $val['link'];  
  7. $src = getChildRss($url);  
  8. if (!emptyempty($src)){  
  9. $img = "<img src="{$url}{$src}">";  
  10. echo $img;  
  11. }  
  12. }  
  13. }  
  14. // リンクのRSSを見に行って最初に現れる画像のsrc取得  
  15. function getChildRss($url){  
  16. $xml_data = file_get_contents($url);  
  17. $rssdata = XML_unserialize($xml_data);  
  18. if (!emptyempty($rssdata['rss']['channel']['item'])){  
  19. foreach ($rssdata['rss']['channel']['item'as $val){  
  20. // 最初に現れるimgタグ取得  
  21. preg_match_all("/<img(.+?)>/"$val['content:encoded'], $img);  
  22. if (count($img[0]) !== 0) {  
  23. // imgタグ内のsrc取得  
  24. preg_match_all('/src="(.+?)"/'$img[0][0], $src);  
  25. if (count($src[0]) !== 0) {  
  26. return $src[1][0];  
  27. }  
  28. }  
  29. }  
  30. }  
  31. return "";  
  32. }  
  33. </img(.+?)>