• このエントリーをはてなブックマークに追加

RSSフィードの表示スクリプトはあるが、それをJavaScriptでってなると面倒。document.writeにすべて表示部分を変更しなければいけない。

注意する点は、JavaScriptを外部参照するため、
<script>タグなどをこのPHPに追記して、JavaScriptとして表示してはいけない。真っ白になります。HTMLではないので、JavaScriptを記述しよう。

サンプルコード

とにかくコピペして、URL書き換えるだけで動かしたいんや!って人のためのサンプルです。

<?php //<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ?>
<?php
header("Content-type: application/x-javascript");

/**
 * ブログ新着記事表示
 */

// RSSデータのリスト「,」区切りでURLを複数指定可能
// サンプルURLなので、example.comというドメインを記述していますが、あなたの読み込みたいブログのフィードなどを指定してくださいね。
// WordPressを想定していますので、他のRSSではうまく処理できないこともあるかもしれません。
$rss_urls = array('https://example.com/feed/');

$blogdata_arr = array();

// RSSを元に取得したデータを各配列に格納する($rss_urlsで指定したURL分ループする)
foreach ( $rss_urls as $rss_url ) {
	
	// RSSデータの読み込み
	$rss_data_url = file_get_contents($rss_url);
	
	// RSSデータの取得
	$rss_data = simplexml_load_string($rss_data_url,'SimpleXMLElement',LIBXML_NOCDATA);
	
	// ブログのタイトル・URLを取得する
	$blog_title = '';
	$blog_url = '';
	
	foreach($rss_data->channel as $item){
		$blog_title = (string)$item->title;
		$blog_link = (string)$item->link;
	}
	
	// RSSフォーマットのオブジェクトを取得してそれぞれの項目を配列に格納する
	foreach($rss_data->channel->item as $item){
		
		// dc:
		$dc = $item->children('http://purl.org/dc/elements/1.1/');
		// content:
		$content = $item->children('http://purl.org/rss/1.0/modules/content/');
		
		
		// 日付フォーマット
		$datetime = date('Y年m月d日', strtotime( (string)$item->pubDate) );
		
		// 格納
		$blogdata_arr[] = array(
			
			'blog_title' => $blog_title
			,'blog_link' => $blog_link
			
			,'post_datetime' => $datetime
			,'post_category' => (string)$item->category
			,'post_title' => (string)$item->title
			,'post_link' => (string)$item->link
			
		);
		
	}
	
}

// 配列を並び替える
$key_id = array(); 
foreach ($blogdata_arr as $key => $value){
	// 並べたいキーを指定する
	$key_id[$key] = $value['post_datetime'];
}
// array_multisort ( $key_id , SORT_DESC , $blogdata_arr); // 昇順
array_multisort ( $key_id , SORT_DESC , $blogdata_arr); // 降順

foreach ( $blogdata_arr as $data ) {
	?>
	
	// JavaScriptのコードだけを表示すること!
	
	document.write('<ul>');
		document.write('<li>');
			document.write('<div class="datetime"><?php echo $data['post_datetime']; ?></div>');
			document.write('<div class="title"><a href="<?php echo $data['post_link']; ?>"><?php echo $data['post_title']; ?></a></div>');
		document.write('</li>');
	document.write('</ul>');
	
	<?php
}
?>

解析用のPHPスクリプト

配列表示して内容を確認したい人のためのサンプルコード。

<?php //<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ?>
<?php
header("Content-type: application/x-javascript");

/**
 * ブログ新着記事表示
 */

// RSSデータのリスト「,」区切りでURLを複数指定可能
// サンプルURLなので、example.comというドメインを記述していますが、あなたの読み込みたいブログのフィードなどを指定してくださいね。
// WordPressを想定していますので、他のRSSではうまく処理できないこともあるかもしれません。
$rss_urls = array('https://example.com/feed/');

$blogdata_arr = array();

// RSSを元に取得したデータを各配列に格納する($rss_urlsで指定したURL分ループする)
foreach ( $rss_urls as $rss_url ) {
	
	// RSSデータの読み込み
	$rss_data_url = file_get_contents($rss_url);
	
	// RSSデータの取得
	$rss_data = simplexml_load_string($rss_data_url,'SimpleXMLElement',LIBXML_NOCDATA);
	
	// ブログのタイトル・URLを取得する
	$blog_title = '';
	$blog_url = '';
	
	foreach($rss_data->channel as $item){
		$blog_title = (string)$item->title;
		$blog_link = (string)$item->link;
	}
	
	// RSSフォーマットのオブジェクトを取得してそれぞれの項目を配列に格納する
	foreach($rss_data->channel->item as $item){
		
		// dc:
		$dc = $item->children('http://purl.org/dc/elements/1.1/');
		// content:
		$content = $item->children('http://purl.org/rss/1.0/modules/content/');
		
		
		// 日付フォーマット
		$datetime = date('Y年m月d日', strtotime( (string)$item->pubDate) );
		
		// 格納
		$blogdata_arr[] = array(
			
			'blog_title' => $blog_title
			,'blog_link' => $blog_link
			
			,'post_datetime' => $datetime
			,'post_category' => (string)$item->category
			,'post_title' => (string)$item->title
			,'post_link' => (string)$item->link
			
		);
		
	}
	
}

// 配列を並び替える
$key_id = array(); 
foreach ($blogdata_arr as $key => $value){
	// 並べたいキーを指定する
	$key_id[$key] = $value['post_datetime'];
}
// array_multisort ( $key_id , SORT_DESC , $blogdata_arr); // 昇順
array_multisort ( $key_id , SORT_DESC , $blogdata_arr); // 降順

/*
echo '<pre>';
print_r($blogdata_arr);
echo '</pre>';
*/

foreach ( $blogdata_arr as $data ) {
	?>
	
	// JavaScriptのコードだけを表示すること!
	
	document.write('<ul>');
		document.write('<li>');
			document.write('<div class="datetime"><?php echo $data['post_datetime']; ?></div>');
			document.write('<div class="title"><a href="<?php echo $data['post_link']; ?>"><?php echo $data['post_title']; ?></a></div>');
		document.write('</li>');
	document.write('</ul>');
	
	<?php
	
	
	
	/*
	?>
		<ul>
			<li><?php echo $data['blog_title']; ?></li>
			<li><?php echo $data['blog_link']; ?></li>
			<li><?php echo $data['post_datetime']; ?></li>
			<li><?php echo $data['post_category']; ?></li>
			<li><?php echo $data['post_title']; ?></li>
			<li><?php echo $data['post_link']; ?></li>
		</ul>
	<?php
	*/
}
?>