simplexml_load_fileが使えずRSS取得できない時の対処法

WADAXというレンタルサーバーで外部ブログのRSSを取得し、新着記事一覧を表示させようとしました。

が、PHPの設定がallow_url_fopen=0に設定されていて、simplexml_load_fileが使えなかった。

以下のコードで表示できました。

<?php

function curl_get_contents($url, $timeout = 60)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

$result = curl_get_contents('https://○○○○.com/rss.xml', 120); //取得したいブログのRSSのURL
$rssData = simplexml_load_string($result);

$return_html = '<div class="box">';
$entry_date = '';
$i = 0;
foreach ($rssData->channel->item as $entry) {
    if ($i >= 10) { //表示したい件数 10件
        break;
    } else {
        $title = $entry->title; //【記事タイトル】
        $entry_date = date('y年m月d日', strtotime($entry->pubDate)); //【投稿日】
        $link = $entry->link; //【記事リンク】

        //出力する html
        $return_html .= '<article class=\"item\"><a href="' . $link . '" target="_blank"><time class="time">' . $entry_date . '</time><p class="ttl">' . $title . '</p></a></article>';
        $i++;
    }
}
$return_html .= '</div>';
echo "document.write('$return_html');";

取得したいRSSのURLを設定してください。

index.htmlに記事一覧を挿入したい箇所に下記コード。

<script type="text/javascript" src="feed.php"></script>

※index.htmlとfeed.phpが同フォルダにある場合。

以下のコードが生成されます。

<div class="box">
  <article class="item">
    <a href="https://○○○○.html" target="_blank">
      <time class="time">22年01月01日</time>
      <p class="ttl">タイトル1</p>
    </a>
  </article>
  <article class="item">
    <a href="https://○○○○.html" target="_blank">
      <time class="time">22年02月02日</time>
      <p class="ttl">タイトル2</p>
    </a>
  </article>
</div>
よかったらシェアしてね!
目次