国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php中RSS訂閱類的使用方法

2020-03-22 19:13:12
字體:
供稿:網(wǎng)友
這篇文章主要介紹了php生成RSS訂閱的方法,較為詳細(xì)的分析了一個(gè)RSS訂閱類及其具體使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

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

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

代碼如下:

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

下面分享一段使用 php 動(dòng)態(tài)生成 RSS 的代碼示例:

代碼如下:

 ?php ** php 動(dòng)態(tài)生成 RSS 類 define( TIME_ZONE , define( FEEDCREATOR_VERSION , www.jb51.net //您的網(wǎng)址 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 }        

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汉沽区| 临夏市| 石棉县| 四川省| 太康县| 西盟| 黎平县| 望江县| 安新县| 阳朔县| 灌云县| 靖西县| 吐鲁番市| 常宁市| 龙江县| 启东市| 五常市| 桐乡市| 嘉定区| 太和县| 新巴尔虎右旗| 临澧县| 云梦县| 宜君县| 冷水江市| 曲水县| 仁寿县| 林西县| 托克托县| 澄江县| 大姚县| 东乡| 磐石市| 肇源县| 云和县| 临江市| 东明县| 彰化县| 衡南县| 兴文县| 南皮县|