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

研究
brotiN biswaS at Pexels
この記事は約5分で読めます。

この記事は2年前の記事です。当時の情報、理解に基づいておりますのでご留意ください

はじめに

作ると言いつつ作っていなかったのでサイトマップと並べて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";

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

【PHP】PHPでサイトマップを出力してみるサンプル
はじめに続き。軽くサイトマップの出力ソースを公開します。基本仕様LAMPブログっぽくデータベースに可変ページが追加されるタイプ今度は固定ページと可変ページを入れる可変ページの一覧は前もって取得してある...

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

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

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

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

コメント

タイトルとURLをコピーしました