亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php中RSS訂閱類的使用方法

2020-03-22 19:13:12
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php生成RSS訂閱的方法,較為詳細的分析了一個RSS訂閱類及其具體使用技巧,非常具有實用價值,需要的朋友可以參考下

本文實例講述了php生成RSS訂閱的方法。具體分析如下:

RSS(簡易信息聚合,也叫聚合內容)是一種描述和同步網站內容的格式。RSS可以是以下三個解釋的其中一個: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其實這三個解釋都是指同一種Syndication的技術。RSS目前廣泛用于網上新聞頻道,blog和wiki。使用RSS訂閱能更快地獲取信息,網站提供RSS輸出,有利于讓用戶獲取網站內容的最新更新。網絡用戶可以在客戶端借助于支持RSS的聚合工具軟件,在不打開網站內容頁面的情況下閱讀支持RSS輸出的網站內容。
從技術上來說一個RSS文件就是一段規范的XML數據,該文件一般以rss,xml或者rdf作為后綴,下面是一段 rss 文件的內容示例:

代碼如下:

 ?xml version= 1.0 encoding= utf-8 ?  rss version= 2.0  channel  title PHP  /title  link //www.49028c.com/ /link  description PHP  /description  item  title RSS Tutorial /title  link 網站地址/rss /link  description New RSS tutorial on W3School /description  /item  item  title XML Tutorial /title  link 網站地址/xml /link  description New XML tutorial on W3School /description  /item  /channel  /rss 

下面分享一段使用 php 動態生成 RSS 的代碼示例:

代碼如下:

 ?php ** php 動態生成 RSS 類 define( TIME_ZONE , define( FEEDCREATOR_VERSION , www.jb51.net //您的網址 html' target='_blank'>class FeedItem extends HtmlDescribable{  var $title,$description,$link;  var $author,$authorEmail,$image,$category,$comments,$guid,$source,$creator; var $date; var $additionalElements=Array(); class FeedImage extends HtmlDescribable{  var $title,$url,$link;  var $width,$height,$description; class HtmlDescribable{  var $descriptionHtmlSyndicated;  var $descriptionTruncSize;  function getDescription(){  $descriptionField=new FeedHtmlField($this- description);  $descriptionField- syndicateHtml=$this- descriptionHtmlSyndicated; $descriptionField- truncSize=$this- descriptionTruncSize; return $descriptionField- output(); class FeedHtmlField{  var $rawFieldContent;  var $truncSize,$syndicateHtml;  function FeedHtmlField($parFieldContent){  if($parFieldContent){  $this- rawFieldContent=$parFieldContent;  function output(){  if(!$this- rawFieldContent){  $result=  } elseif($this- syndicateHtml){  $result= ![CDATA[ .$this- rawFieldContent. ]]  }else{  if($this- truncSize and is_int($this- truncSize)){  $result=FeedCreator::iTrunc(htmlspecialchars($this- rawFieldContent),$this- truncSize); }else{  $result=htmlspecialchars($this- rawFieldContent);  return $result; class UniversalFeedCreator extends FeedCreator{  var $_feed;  function _setFormat($format){  switch (strtoupper($format)){  case 2.0 :  // fall through  case RSS2.0 :  $this- _feed=new RSSCreator20();  break;  case 0.91 :  // fall through  case RSS0.91 :  $this- _feed=new RSSCreator091();  break;  default:  $this- _feed=new RSSCreator091();  break;  $vars=get_object_vars($this);  foreach ($vars as $key = $value){  // prevent overwriting of properties contentType , encoding do not copy _feed itself  if(!in_array($key, array( _feed , contentType , encoding ))){  $this- _feed- {$key}=$this- {$key};  function createFeed($format= RSS0.91 ){  $this- _setFormat($format);  return $this- _feed- createFeed();  function saveFeed($format= RSS0.91 ,$filename= ,$displayContents=true){  $this- _setFormat($format);  $this- _feed- saveFeed($filename,$displayContents);  function useCached($format= RSS0.91 ,$filename= ,$timeout=3600){  $this- _setFormat($format);  $this- _feed- useCached($filename,$timeout); class FeedCreator extends HtmlDescribable{  var $title,$description,$link;  var $syndicationURL,$image,$language,$copyright,$pubDate,$lastBuildDate,$editor,$editorEmail,$webmaster,$category,$docs,$ttl,$rating,$skipHours,$skipDays; var $xslStyleSheet=  var $items=Array();  var $contentType= application/xml  var $encoding= utf-8  var $additionalElements=Array();  function addItem($item){  $this- items[]=$item;  function clearItem2Null(){  $this- items=array();  function iTrunc($string,$length){  if(strlen($string) =$length){  return $string;  $pos=strrpos($string, .  if($pos =$length-4){  $string=substr($string,0,$length-4);  $pos=strrpos($string, .  if($pos =$length*0.4){  return substr($string,0,$pos+1). ...  $pos=strrpos($string,  if($pos =$length-4){  $string=substr($string,0,$length-4);  $pos=strrpos($string,  if($pos =$length*0.4){  return substr($string,0,$pos). ...  return substr($string,0,$length-4). ...  function _createGeneratorComment(){  return !-- generator=/ .FEEDCREATOR_VERSION. / -- /n  function _createAdditionalElements($elements,$indentString= ){  $ae=  if(is_array($elements)){  foreach($elements AS $key = $value){  $ae.= $indentString. $key $value /$key /n  return $ae;  function _createStylesheetReferences(){  $xml=  if($this- cssStyleSheet) $xml .= ?xml-stylesheet href=/ .$this- cssStyleSheet. / type=/ text/css/ ? /n  if($this- xslStyleSheet) $xml .= ?xml-stylesheet href=/ .$this- xslStyleSheet. / type=/ text/xsl/ ? /n  return $xml;  function createFeed(){}  function _generateFilename(){  $fileInfo=pathinfo($_SERVER[ PHP_SELF ]);  return substr($fileInfo[ basename ],0,-(strlen($fileInfo[ extension ])+1)). .xml  function _redirect($filename){  Header( Content-Type: .$this- contentType. charset= .$this- encoding. filename= .basename($filename));  Header( Content-Disposition: inline; filename= .basename($filename));  readfile($filename, r  die();  function useCached($filename= ,$timeout=3600){  $this- _timeout=$timeout;  if($filename== ){  $filename=$this- _generateFilename();  if(file_exists($filename) (time()-filemtime($filename) $timeout)){  $this- _redirect($filename);  function saveFeed($filename= ,$displayContents=true){  if($filename== ){  $filename=$this- _generateFilename();  $feedFile=fopen($filename, w+  if($feedFile){  fputs($feedFile,$this- createFeed());  fclose($feedFile);  if($displayContents){  $this- _redirect($filename);  }else{  echo br / b Error creating feed file, please check write permissions. /b br / class FeedDate{  var $unix;  function FeedDate($dateString= ){  if($dateString== ) $dateString=date( r  if(is_integer($dateString)){  $this- unix=$dateString;  return;  if(preg_match( ~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),//s+)?(//d{1,2})//s+([a-zA-Z]{3})//s+(//d{4})//s+(//d{2}):(//d{2}):(//d{2})//s+(.*)~ ,$dateString,$matches)){  $months=Array( Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, Jul = 7, Aug = 8, Sep = 9, Oct = 10, Nov = 11, Dec =  $this- unix=mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]);  if(substr($matches[7],0,1)== + OR substr($matches[7],0,1)== - ){  $tzOffset=(substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;  }else{  if(strlen($matches[7])==1){  $oneHour=3600;  $ord=ord($matches[7]);  if($ord ord( M )){  $tzOffset=(ord( A ) - $ord - 1) * $oneHour;  } elseif($ord = ord( M ) $matches[7]!= Z ){  $tzOffset=($ord - ord( M )) * $oneHour;  } elseif($matches[7]== Z ){  $tzOffset=0;  switch ($matches[7]){  case UT :  case GMT : $tzOffset=0;  $this- unix += $tzOffset;  return;  if(preg_match( ~(//d{4})-(//d{2})-(//d{2})T(//d{2}):(//d{2}):(//d{2})(.*)~ ,$dateString,$matches)){  $this- unix=mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);  if(substr($matches[7],0,1)== + OR substr($matches[7],0,1)== - ){  $tzOffset=(substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;  }else{  if($matches[7]== Z ){  $tzOffset=0;  $this- unix += $tzOffset;  return;  $this- unix=0;  function rfc822(){  $date=gmdate( Y-m-d H:i:s ,$this- unix);  if(TIME_ZONE!= ) $date .= .str_replace( : , ,TIME_ZONE);  return $date;  function iso8601(){  $date=gmdate( Y-m-d H:i:s ,$this- unix);  $date=substr($date,0,22) . : . substr($date,-2);  if(TIME_ZONE!= ) $date=str_replace( +00:00 ,TIME_ZONE,$date);  return $date;  function unix(){  return $this- unix; class RSSCreator10 extends FeedCreator{  function createFeed(){  $feed= ?xml version=/ 1.0/ encoding=/ .$this- encoding. / ? /n  $feed.= $this- _createGeneratorComment();  if($this- cssStyleSheet== ){  $cssStyleSheet= http://www.w3.org/2000/08/w3c-synd/style.css  $feed.= $this- _createStylesheetReferences();  $feed.= rdf:RDF/n  $feed.= xmlns=/ http://purl.org/rss/1.0// /n  $feed.= xmlns:rdf=/ http://www.w3.org/1999/02/22-rdf-syntax-ns#/ /n  $feed.= xmlns:slash=/ http://purl.org/rss/1.0/modules/slash// /n  $feed.= xmlns:dc=/ http://purl.org/dc/elements/1.1// /n  $feed.= channel rdf:about=/ .$this- syndicationURL. / /n  $feed.= title .htmlspecialchars($this- title). /title /n  $feed.= description .htmlspecialchars($this- description). /description /n  $feed.= link .$this- link. /link /n  if($this- image!=null){  $feed.= image rdf:resource=/ .$this- image- url. / / /n  $now=new FeedDate();  $feed.= dc:date .htmlspecialchars($now- iso8601()). /dc:date /n  $feed.= items /n  $feed.= rdf:Seq /n  for ($i=0;$i count($this- items);$i++){  $feed.= rdf:li rdf:resource=/ .htmlspecialchars($this- items[$i]- link). / / /n  $feed.= /rdf:Seq /n  $feed.= /items /n  $feed.= /channel /n  if($this- image!=null){  $feed.= image rdf:about=/ .$this- image- url. / /n  $feed.= title .$this- image- title. /title /n  $feed.= link .$this- image- link. /link /n  $feed.= url .$this- image- url. /url /n  $feed.= /image /n  $feed.= $this- _createAdditionalElements($this- additionalElements,  for ($i=0;$i count($this- items);$i++){  $feed.= item rdf:about=/ .htmlspecialchars($this- items[$i]- link). / /n  //$feed.= dc:type Posting /dc:type /n  $feed.= dc:format text/html /dc:format /n  if($this- items[$i]- date!=null){  $itemDate=new FeedDate($this- items[$i]- date);  $feed.= dc:date .htmlspecialchars($itemDate- iso8601()). /dc:date /n  if($this- items[$i]- source!= ){  $feed.= dc:source .htmlspecialchars($this- items[$i]- source). /dc:source /n  if($this- items[$i]- author!= ){  $feed.= dc:creator .htmlspecialchars($this- items[$i]- author). /dc:creator /n  $feed.= title .htmlspecialchars(strip_tags(strtr($this- items[$i]- title, /n/r , ))). /title /n  $feed.= link .htmlspecialchars($this- items[$i]- link). /link /n  $feed.= description .htmlspecialchars($this- items[$i]- description). /description /n  $feed.= $this- _createAdditionalElements($this- items[$i]- additionalElements,  $feed.= /item /n  $feed.= /rdf:RDF /n  return $feed; class RSSCreator091 extends FeedCreator{  var $RSSVersion;  function RSSCreator091(){  $this- _setRSSVersion( 0.91  $this- contentType= application/rss+xml  function _setRSSVersion($version){  $this- RSSVersion=$version;  function createFeed(){  $feed= ?xml version=/ 1.0/ encoding=/ .$this- encoding. / ? /n  $feed.= $this- _createGeneratorComment();  $feed.= $this- _createStylesheetReferences();  $feed.= rss version=/ .$this- RSSVersion. / /n  $feed.= channel /n  $feed.= title .FeedCreator::iTrunc(htmlspecialchars($this- title),100). /title /n  $this- descriptionTruncSize=500;  $feed.= description .$this- getDescription(). /description /n  $feed.= link .$this- link. /link /n  $now=new FeedDate();  $feed.= lastBuildDate .htmlspecialchars($now- rfc822()). /lastBuildDate /n  $feed.= generator .FEEDCREATOR_VERSION. /generator /n  if($this- image!=null){  $feed.= image /n  $feed.= url .$this- image- url. /url /n  $feed.= title .FeedCreator::iTrunc(htmlspecialchars($this- image- title),100). /title /n  $feed.= link .$this- image- link. /link /n  if($this- image- width!= ){  $feed.= width .$this- image- width. /width /n  if($this- image- height!= ){  $feed.= height .$this- image- height. /height /n  if($this- image- description!= ){  $feed.= description .$this- image- getDescription(). /description /n  $feed.= /image /n  if($this- language!= ){  $feed.= language .$this- language. /language /n  if($this- copyright!= ){  $feed.= copyright .FeedCreator::iTrunc(htmlspecialchars($this- copyright),100). /copyright /n  if($this- editor!= ){  $feed.= managingEditor .FeedCreator::iTrunc(htmlspecialchars($this- editor),100). /managingEditor /n  if($this- webmaster!= ){  $feed.= webMaster .FeedCreator::iTrunc(htmlspecialchars($this- webmaster),100). /webMaster /n  if($this- pubDate!= ){  $pubDate=new FeedDate($this- pubDate);  $feed.= pubDate .htmlspecialchars($pubDate- rfc822()). /pubDate /n  if($this- category!= ){  $feed.= category .htmlspecialchars($this- category). /category /n  if($this- docs!= ){  $feed.= docs .FeedCreator::iTrunc(htmlspecialchars($this- docs),500). /docs /n  if($this- ttl!= ){  $feed.= ttl .htmlspecialchars($this- ttl). /ttl /n  if($this- rating!= ){  $feed.= rating .FeedCreator::iTrunc(htmlspecialchars($this- rating),500). /rating /n  if($this- skipHours!= ){  $feed.= skipHours .htmlspecialchars($this- skipHours). /skipHours /n  if($this- skipDays!= ){  $feed.= skipDays .htmlspecialchars($this- skipDays). /skipDays /n  $feed.= $this- _createAdditionalElements($this- additionalElements,  for ($i=0;$i count($this- items);$i++){  $feed.= item /n  $feed.= title .FeedCreator::iTrunc(htmlspecialchars(strip_tags($this- items[$i]- title)),100). /title /n  $feed.= link .htmlspecialchars($this- items[$i]- link). /link /n  $feed.= description .$this- items[$i]- getDescription(). /description /n  if($this- items[$i]- author!= ){  $feed.= author .htmlspecialchars($this- items[$i]- author). /author /n  // on hold  if($this- items[$i]- source!= ){  $feed.= source .htmlspecialchars($this- items[$i]- source). /source /n  if($this- items[$i]- category!= ){  $feed.= category .htmlspecialchars($this- items[$i]- category). /category /n  if($this- items[$i]- comments!= ){  $feed.= comments .htmlspecialchars($this- items[$i]- comments). /comments /n  if($this- items[$i]- date!= ){  $itemDate=new FeedDate($this- items[$i]- date);  $feed.= pubDate .htmlspecialchars($itemDate- rfc822()). /pubDate /n  if($this- items[$i]- guid!= ){  $feed.= guid .htmlspecialchars($this- items[$i]- guid). /guid /n  $feed.= $this- _createAdditionalElements($this- items[$i]- additionalElements,  $feed.= /item /n  $feed.= /channel /n  $feed.= /rss /n  return $feed; class RSSCreator20 extends RSSCreator091{  function RSSCreator20(){  parent::_setRSSVersion( 2.0 }        

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品一区二区三区| 91精品久久久久久久久久| 国产精品一二三在线| 国产成人福利网站| 91免费人成网站在线观看18| 日韩精品极品毛片系列视频| 91沈先生在线观看| 亚洲黄一区二区| 国产精品电影在线观看| 国模叶桐国产精品一区| 亚洲精品综合精品自拍| 欧美日本高清视频| 狠狠色香婷婷久久亚洲精品| 视频在线观看99| 欧美激情亚洲精品| 97在线精品视频| 亚洲免费小视频| 久久精品99国产精品酒店日本| 欧美日本高清一区| 国产成人自拍视频在线观看| 亚洲免费中文字幕| 性欧美暴力猛交69hd| 国产精品白丝av嫩草影院| 国产美女精品视频免费观看| 久久不射热爱视频精品| 欧美激情一二区| 欧美日韩日本国产| 中文字幕av一区中文字幕天堂| 中文日韩在线视频| 日韩欧美在线播放| 久久久久久亚洲精品中文字幕| 日韩在线高清视频| 91成人天堂久久成人| 热久久视久久精品18亚洲精品| 国产一区二区三区毛片| 欧美日韩精品二区| 久久国产精品久久久久| 精品视频久久久久久| 91九色国产视频| 亚洲成人在线视频播放| 麻豆国产va免费精品高清在线| 欧美黄色www| 亚洲人成在线电影| 精品久久久一区二区| 亚洲一区二区三区视频| 91国内精品久久| 成人夜晚看av| 亚洲精品mp4| 欧美午夜性色大片在线观看| 国产欧美一区二区三区四区| 久久免费视频在线| 欧美视频精品一区| 国产精品v片在线观看不卡| 亚洲国产精品va| 激情成人在线视频| 孩xxxx性bbbb欧美| 国产成人涩涩涩视频在线观看| 久久福利视频网| 久久亚洲春色中文字幕| 亚洲免费人成在线视频观看| 国产又爽又黄的激情精品视频| 亚洲精品suv精品一区二区| 国产精品久久久久久久久久久新郎| 日韩成人中文字幕| 久久人人97超碰精品888| 国产精品r级在线| 成人黄色免费片| 日韩电影免费在线观看| 日韩国产高清视频在线| 亚洲欧美日本精品| 欧美中文字幕在线观看| 国产精品久久久久久久7电影| 欧美xxxx做受欧美.88| 欧美日韩久久久久| 成人a免费视频| 亚洲国产精品专区久久| 一本大道亚洲视频| 欧洲成人午夜免费大片| 日韩欧美在线观看| www.日韩不卡电影av| 国产精品精品国产| 黑人巨大精品欧美一区二区| 狠狠综合久久av一区二区小说| 欧美日韩国产精品一区| 91精品国产综合久久香蕉922| 最好看的2019年中文视频| 欧美高清视频一区二区| 在线精品高清中文字幕| 亚洲国产成人久久综合| 久久久久久免费精品| 91亚洲精品久久久久久久久久久久| 日韩精品视频在线观看免费| 精品视频9999| 欧美国产日韩一区二区| 欧美性猛交xxx| 久久国产精品久久精品| 欧美网站在线观看| 欧美华人在线视频| 国产婷婷97碰碰久久人人蜜臀| 91亚洲人电影| 午夜精品一区二区三区在线视| 亚洲视频精品在线| 亚洲国产91精品在线观看| 欧美丰满少妇xxxxx| 欧美猛交免费看| 国产精品v片在线观看不卡| 日韩色av导航| 欧美在线一区二区视频| 日本aⅴ大伊香蕉精品视频| 亚洲国产天堂久久综合| 另类色图亚洲色图| 中文字幕日韩在线观看| 国内精品视频久久| 欧美国产日韩一区二区三区| 狠狠爱在线视频一区| 最近2019好看的中文字幕免费| 国产一区二区三区在线视频| 精品国产91久久久久久老师| 久久精品视频中文字幕| 日韩国产高清视频在线| 亚洲免费视频网站| 成人国产在线视频| 国产欧美亚洲视频| 一区二区三区精品99久久| 亚洲天堂免费在线| 欧美精品免费看| 97超级碰碰碰久久久| 欧美成人精品影院| 国产精品高清在线观看| 亚洲精品视频在线观看视频| 精品女同一区二区三区在线播放| 日韩欧亚中文在线| 国模吧一区二区| 麻豆成人在线看| 亚洲最大的av网站| 国模精品视频一区二区三区| 国产成人亚洲精品| 91在线免费观看网站| 亚洲免费人成在线视频观看| 欧美另类老肥妇| 久久躁狠狠躁夜夜爽| 在线播放国产一区中文字幕剧情欧美| 国产视频精品自拍| 91免费精品视频| 日韩精品福利在线| 欧美激情极品视频| 欧美肥老妇视频| 韩日精品中文字幕| 欧美片一区二区三区| 91色琪琪电影亚洲精品久久| 精品亚洲夜色av98在线观看| 九九久久精品一区| 欧美激情欧美激情| 亚洲国产天堂久久综合| 亚洲精品按摩视频| 免费91麻豆精品国产自产在线观看| 三级精品视频久久久久| 国产福利视频一区| 欧美高清一级大片| 中文字幕精品—区二区| 综合136福利视频在线| 亚洲人成毛片在线播放| 亚洲天堂av在线免费| 久久久久99精品久久久久|