RSSのURLからHTMLを生成する

■説明

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);
     }
   });
});

投稿者 PASOMEN

関連投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です