RSSで記事一覧を取得する際に画像を一緒に取得して欲しいという要望があったのでこんな形で取ってみました。
- $rssurl = "http://xxxxxx.xml";
- $xml_data = file_get_contents($rssurl);
- $rssdata = XML_unserialize($xml_data);
- foreach ($rssdata['rss']['channel']['item'] as $val){
- // リンクのURLを見に行って最初に現れる画像のsrc取得
- $url = $val['link'];
- $src = getChildRss($url);
- if (!emptyempty($src)){
- $img = "<img src="{$url}{$src}">";
- echo $img;
- }
- }
- }
- // リンクのRSSを見に行って最初に現れる画像のsrc取得
- function getChildRss($url){
- $xml_data = file_get_contents($url);
- $rssdata = XML_unserialize($xml_data);
- if (!emptyempty($rssdata['rss']['channel']['item'])){
- foreach ($rssdata['rss']['channel']['item'] as $val){
- // 最初に現れるimgタグ取得
- preg_match_all("/<img(.+?)>/", $val['content:encoded'], $img);
- if (count($img[0]) !== 0) {
- // imgタグ内のsrc取得
- preg_match_all('/src="(.+?)"/', $img[0][0], $src);
- if (count($src[0]) !== 0) {
- return $src[1][0];
- }
- }
- }
- }
- return "";
- }
- </img(.+?)>