■説明
PHPとJSでRSSから(画像・日時・投稿日付・タイトル・概要説明)HTMLを生成する
■コード
【PHP】
<?php
date_default_timezone_set('Asia/Tokyo');
$url = filter_input(INPUT_POST, 'rssUrl');
$max = 10;
$rss = simplexml_load_file($url);
if($rss){
if($rss->channel->item){
itemOutput($rss->channel->item,$max);
}else if($rss->item){
itemOutput($rss->item,$max);
}
}
function itemOutput($items,$max){
$preg = '/<img.*?src\s*?=\s*?[\"|\'](.*?(jpg|jpeg|gif|png))[\"|\'].*?>/i';
$preg2 = '/(https?\:\/\/[\-_\.\!\~\*\'\(\)a-zA-Z0-9\;\/\?\:\@\&\=\+\$\,\%\#]+(jpg|jpeg|gif|png|bmp))/i';
$i = 0;
$output = '';
foreach( $items as $item ){
if(!preg_match('/^PR:/',$item->title )){
if($i < $max){
if($item->pubDate){
$timestamp = strtotime( $item->pubDate );
}else if($item->children("http://purl.org/dc/elements/1.1/")->date){
$timestamp = strtotime( $item->children("http://purl.org/dc/elements/1.1/")->date);
}
$date = date( 'Y年m月d日',$timestamp );
$output .= '<li class="blog_item">';
$output .= '<a href="'. $item->link .'" target="_blank">';
$rssImage = '';
$content = $item->children('http://purl.org/rss/1.0/modules/content/');
if(preg_match_all($preg, $item->description, $match)){
if(preg_match($preg2, $match[0][0], $match2)){
$first_img = $match2[0];
$output .= '<img src="'.$first_img.'" alt="">';
}
}else if(preg_match_all($preg_string, $content, $match)){
if(preg_match($preg_string3, $match[0][0], $match2)){
$first_img = $match2[0];
$output .= '<img src="'.$first_img.'" alt="">';
}
}
$output .= '<span><span class="date">' . $date . '</span>';
$output .= '<span class="title">'.$item->title . '</span>';
$output .= '<span class="text">'. str_replace(array(" "," ","\r", "\n"), "",mb_substr(strip_tags($item->description,''), 0, 150,'UTF-8')).'...</span></span>';
$output .= '</a></li>';
$i++;
}
}
}
echo $output;
}
?>
【JS】
$(function(){
$.ajax({
url: './data.php',//階層は合わせてください。
type:"POST",
data: {"rssUrl":'ここにRSSのURL'},
/* エラー発生時 */
error:function(){
console.log("読み込みに失敗");
},
/* 成功時 */
success:function(data){
$("ここに表示させたい場所のHTMLIDなど").html(data);
}
});
});