外部の RSS を PHP で取得する

RSSの読み込みに必要なもの

MagpieRSSからmagpierss-0.71.1.tar.gz をダウンロードして展開し、下記のファイルを

表示させたいファイルと同じディレクトリへアップロードする。

 

  • rss_cache.inc
  • rss_fetch.inc
  • rss_parse.inc
  • rss_utils.inc
  • extlib ←これはフォルダ
  •  

RSS を表示させたいファイルへ下記のコードを記述して完了。

 

<?php
error_reporting(E_ERROR);
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://〇〇〇.ne.jp/rss20.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
echo "<h3>$title</h3>\n";
echo "<dl>\n";
foreach ($rss->items as $item ) {
$title = htmlspecialchars($item['title']);
$description = htmlspecialchars($item['description']);
$url = htmlspecialchars($item['link']);
echo "<dt><a href=\"$url\">$title</a></dt>\n";
echo "<dd>$description</dd>\n";
}
echo "</dl>\n";
?>

 

太字の部分は取得したいRSSファイルのURLへ書き換える。

 

<文字化け>

今回表示させたいファイルが「hift_JIS」で書かれており、

そのまま表示させると文字化けをおこしてしまった。

そこで

UTF-8を強制的にSJISへ変換

上記コードを

<?php
header("Content-Type: text/html; charset=Shift_JIS");
ob_start();
?>

<?php
$out = ob_get_clean();
$out = mb_convert_kana($out, "rak", "UTF-8");
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
echo $out;
?>

で囲む。

つまり

<?php
header("Content-Type: text/html; charset=Shift_JIS");
ob_start();
?>

<?php
error_reporting(E_ERROR);
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://in-novare.com/index.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "SJIS-win", "UTF-8");
echo "<h3>$title</h3>\n";
echo "<dl>\n";
foreach ($rss->items as $item ) {
$title = htmlspecialchars($item['title']);
$description = $item['description'];

$url   = htmlspecialchars($item['link']);
echo "<dt><a href=\"$url\">$title</a></dt>\n";
echo "<dd>$description</dd>\n";
}
echo "</dl>\n";
?>

<?php
$out = ob_get_clean();
$out = mb_convert_kana($out, "rak", "UTF-8");
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
echo $out;
?>
 

と記述する。

 

 

 

1  2  3  4