【PHP】PHPでRSSを出力してみるサンプル

投稿者:

はじめに

作ると言いつつ作っていなかったのでサイトマップと並べて30分で提出いたしました。
その報告だけだとなんなので軽くRSSの出力ソースを公開します。

基本仕様

  • LAMP
  • ブログっぽくデータベースに可変ページが追加されるタイプ
  • 可変ページの一覧は前もって取得してある

なお可変ページ一覧の仕様

titleページタイトル
urlhttps://から始まるURL
detail本文
datetime投稿日時

ソースコード

$url = 'サービスのURL';
$feed_url = 'feedのURLL';
$title = 'サービスのタイトル';
$variable_pages = array(); // 可変のページを取得してください
header("Content-Type: text/xml; charset=utf-8");
// 出力するページのContent-Typeを定義
// 待て銃口を下げろ私は怪しいものではないRSSフィードだと宣言
echo '<?xml version="1.0" encoding="UTF-8"?>'."\r";
echo '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">'."\r";
echo '<channel>'."\r";
echo '<atom:link href="'.$feed_url.'" rel="self" type="application/rss+xml" />'."\r";
echo '<title>'.$title.'</title>'."\r";
echo "<pubDate>".date(DATE_RFC2822)."</pubDate>"."\r";
echo "<link>".$url."/</link>"."\r";
echo "<description>".$title."</description>";
echo "<language>ja</language>"."\r";
// この辺までお約束

// 可変ページのarrayをforeach
foreach($variable_pages as $key=>$val){
  echo "<item>"."\r";
  echo "<title>".htmlspecialchars($val['title'], ENT_QUOTES)."</title>"."\r";
  echo "<link>".$val['url']."</link>"."\r";
  // ここの足切りは任意で
  $body = $val['detail'];
  $body = preg_replace('/(?:\s|&amp;nbsp;)+/', '', $body);
  $body = preg_replace('/(?:\s|&amp;nbsp)+/', '', $body);
  $body = mb_strimwidth($body, 0, 120, "...", 'UTF-8');
  echo "<description>".htmlspecialchars($body, ENT_QUOTES)."</description>"."\r";
  echo "<guid>".$val['url']."</guid>"."\r";
  echo "<pubDate>".date(DATE_RFC2822, strtotime($val['datetime']))."</pubDate>"."\r";
  echo "</item>"."\r";
}
// よしなにタグを閉じてやらないと無用の長物と化します
echo "</channel>"."\r";
echo "</rss>"."\r";

以上、どなたかのお役に立てれば。
サイトマップの作り方は別記事にアップしました。

https://maya-pg.net/2019/10/04/2019-10-04-131612/

ちなみにCodeIgniterでfeed.xmlというURL、.xmlという拡張子で出力したい場合がありますが、ウチでは何も考えずに

$route['feed.xml'] = 'フィードを作るコントローラー';

と記述しておりますwこれでよしなに対応していただけます。

*なおコピペしたままではご自身の環境で正しく動作しない可能性があります。

コメントを残す