首页 > 语言 > PHP > 正文

php 完美的rss 生成类

2024-09-04 11:44:06
字体:
来源:转载
供稿:网友
  1. <?php 
  2. class rssGenerator_rss 
  3.     var $rss_version = '2.0'
  4.     var $encoding = ''
  5.     var $stylesheet = ''
  6.  
  7.     function cData($str
  8.     { 
  9.         return '<![CDATA[ ' . $str . ' ]]>'
  10.     } 
  11.  
  12.     function createFeed($channel
  13.     { 
  14.         $selfUrl = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on' ? 'http://' : 'https教程://'); 
  15.         $selfUrl .= $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; 
  16.         $rss = '<?xml version="1.0"'
  17.         if (!emptyempty($this->encoding)) { 
  18.             $rss .= ' encoding="' . $this->encoding . '"'
  19.         } 
  20.         $rss .= '?>' . " "
  21.         if (!emptyempty($this->stylesheet)) { 
  22.             $rss .= $this->stylesheet . " "
  23.         } 
  24.         $rss .= '<!-- Generated on ' . date('r') . ' -->' . " "
  25.         $rss .= '<rss version="' . $this->rss_version . '" xmlns:atom="http://www.w3.org/2005/Atom">' . " "
  26.         $rss .= '  <channel>' . " "
  27.      $rss .= '    <atom:link href="' . ($channel->atomLinkHref ? $channel->atomLinkHref : $selfUrl) . '" rel="self" type="application/rss+xml" />' . " "
  28.         $rss .= '    <title>' . $channel->title . '</title>' . " "
  29.         $rss .= '    <link>' . $channel->link . '</link>' . " "
  30.         $rss .= '    <description>' . $channel->description . '</description>' . " "
  31.         if (!emptyempty($channel->language)) { 
  32.             $rss .= '    <language>' . $channel->language . '</language>' . " "
  33.         } 
  34.         if (!emptyempty($channel->copyright)) { 
  35.             $rss .= '    <copyright>' . $channel->copyright . '</copyright>' . " "
  36.         } 
  37.         if (!emptyempty($channel->managingEditor)) { 
  38.             $rss .= '    <managingEditor>' . $channel->managingEditor . '</managingEditor>' . " "
  39.         } 
  40.         if (!emptyempty($channel->webMaster)) { 
  41.             $rss .= '    <webMaster>' . $channel->webMaster . '</webMaster>' . " "
  42.         } 
  43.         if (!emptyempty($channel->pubDate)) { 
  44.             $rss .= '    <pubDate>' . $channel->pubDate . '</pubDate>' . " "
  45.         } 
  46.         if (!emptyempty($channel->lastBuildDate)) { 
  47.             $rss .= '    <lastBuildDate>' . $channel->lastBuildDate . '</lastBuildDate>' . " "
  48.         } 
  49.         foreach ($channel->categories as $category) { 
  50.             $rss .= '    <category'
  51.             if (!emptyempty($category['domain'])) { 
  52.                 $rss .= ' domain="' . $category['domain'] . '"'
  53.             } 
  54.             $rss .= '>' . $category['name'] . '</category>' . " "
  55.         } 
  56.         if (!emptyempty($channel->generator)) { 
  57.             $rss .= '    <generator>' . $channel->generator . '</generator>' . " "
  58.         } 
  59.         if (!emptyempty($channel->docs)) { 
  60.             $rss .= '    <docs>' . $channel->docs . '</docs>' . " "
  61.         } 
  62.         if (!emptyempty($channel->ttl)) { 
  63.             $rss .= '    <ttl>' . $channel->ttl . '</ttl>' . " "
  64.         } 
  65.         if (sizeof($channel->skipHours)) { 
  66.             $rss .= '    <skipHours>' . " "
  67.             foreach ($channel->skipHours as $hour) { 
  68.                 $rss .= '      <hour>' . $hour . '</hour>' . " "
  69.             } 
  70.             $rss .= '    </skipHours>' . " "
  71.         } 
  72.         if (sizeof($channel->skipDays)) { 
  73.             $rss .= '    <skipDays>' . " "
  74.             foreach ($channel->skipDays as $day) { 
  75.                 $rss .= '      <day>' . $day . '</day>' . " "
  76.             } 
  77.             $rss .= '    </skipDays>' . " "
  78.         } 
  79.         if (!emptyempty($channel->image)) { 
  80.             $image = $channel->image; 
  81.             $rss .= '    <image>' . " "
  82.             $rss .= '      <url>' . $image->url . '</url>' . " "
  83.             $rss .= '      <title>' . $image->title . '</title>' . " "
  84.             $rss .= '      <link>' . $image->link . '</link>' . " "
  85.             if ($image->width) { 
  86.                 $rss .= '      <width>' . $image->width . '</width>' . " "
  87.             } 
  88.             if ($image->height) { 
  89.                 $rss .= '      <height>' . $image->height . '</height>' . " "
  90.             } 
  91.             if (!emptyempty($image->description)) { 
  92.                 $rss .= '      <description>' . $image->description . '</description>' . " "
  93.             } 
  94.             $rss .= '    </image>' . " "
  95.         } 
  96.         if (!emptyempty($channel->textInput)) { 
  97.             $textInput = $channel->textInput; 
  98.             $rss .= '    <textInput>' . " "
  99.             $rss .= '      <title>' . $textInput->title . '</title>' . " "
  100.             $rss .= '      <description>' . $textInput->description . '</description>' . " "
  101.             $rss .= '      <name>' . $textInput->name . '</name>' . " "
  102.             $rss .= '      <link>' . $textInput->link . '</link>' . " "
  103.             $rss .= '    </textInput>' . " "
  104.         } 
  105.         if (!emptyempty($channel->cloud_domain) || !emptyempty($channel->cloud_path) || !emptyempty($channel->cloud_registerProcedure) || !emptyempty($channel->cloud_protocol)) { 
  106.             $rss .= '    <cloud domain="' . $channel->cloud_domain . '" '
  107.             $rss .= 'port="' . $channel->cloud_port . '" path="' . $channel->cloud_path . '" '
  108.             $rss .= 'registerProcedure="' . $channel->cloud_registerProcedure . '" '
  109.             $rss .= 'protocol="' . $channel->cloud_protocol . '" />' . " "
  110.         } 
  111.         if (!emptyempty($channel->extraXML)) { 
  112.             $rss .= $channel->extraXML . " "
  113.         } 
  114.         foreach ($channel->items as $item) { 
  115.             $rss .= '    <item>' . " "
  116.             if (!emptyempty($item->title)) { 
  117.                 $rss .= '      <title>' . $item->title . '</title>' . " "
  118.             } 
  119.             if (!emptyempty($item->description)) { 
  120.                 $rss .= '      <description>' . $item->description . '</description>' . " "
  121.             } 
  122.             if (!emptyempty($item->link)) { 
  123.                 $rss .= '      <link>' . $item->link . '</link>' . " "
  124.             } 
  125.             if (!emptyempty($item->pubDate)) { 
  126.                 $rss .= '      <pubDate>' . $item->pubDate . '</pubDate>' . " "
  127.             } 
  128.             if (!emptyempty($item->author)) { 
  129.                 $rss .= '      <author>' . $item->author . '</author>' . " "
  130.             } 
  131.             if (!emptyempty($item->comments)) { 
  132.                 $rss .= '      <comments>' . $item->comments . '</comments>' . " "
  133.             } 
  134.             if (!emptyempty($item->guid)) { 
  135.                 $rss .= '      <guid isPermaLink="'
  136.                 $rss .= ($item->guid_isPermaLink ? 'true' : 'false') . '">'
  137.                 $rss .= $item->guid . '</guid>' . " "
  138.             } 
  139.             if (!emptyempty($item->source)) { 
  140.                 $rss .= '      <source url="' . $item->source_url . '">'
  141.                 $rss .= $item->source . '</source>' . " "
  142.             } 
  143.             if (!emptyempty($item->enclosure_url) || !emptyempty($item->enclosure_type)) { 
  144.                 $rss .= '      <enclosure url="' . $item->enclosure_url . '" '
  145.                 $rss .= 'length="' . $item->enclosure_length . '" '
  146.                 $rss .= 'type="' . $item->enclosure_type . '" />' . " "
  147.             } 
  148.             foreach ($item->categories as $category) { 
  149.                 $rss .= '      <category'
  150.                 if (!emptyempty($category['domain'])) { 
  151.                     $rss .= ' domain="' . $category['domain'] . '"'
  152.                 } 
  153.                 $rss .= '>' . $category['name'] . '</category>' . " "
  154.             } 
  155.             $rss .= '    </item>' . " "
  156.         } 
  157.         $rss .= '  </channel>' . " "
  158.         return $rss .= '</rss>'
  159.     } 
  160.  
  161.  
  162. class rssGenerator_channel 
  163.     var $atomLinkHref = ''
  164.     var $title = ''
  165.     var $link = ''
  166.     var $description = ''
  167.     var $language = ''
  168.     var $copyright = ''
  169.     var $managingEditor = ''
  170.     var $webMaster = ''
  171.     var $pubDate = ''
  172.     var $lastBuildDate = ''
  173.     var $categories = array(); 
  174.     var $generator = ''
  175.     var $docs = ''
  176.     var $ttl = ''
  177.     var $image = ''
  178.     var $textInput = ''
  179.     var $skipHours = array(); 
  180.     var $skipDays = array(); 
  181.     var $cloud_domain = ''
  182.     var $cloud_port = '80'
  183.     var $cloud_path = ''
  184.     var $cloud_registerProcedure = ''
  185.     var $cloud_protocol = ''
  186.     var $items = array(); 
  187.     var $extraXML = ''
  188.  
  189.  
  190. class rssGenerator_image 
  191.     var $url = ''
  192.     var $title = ''
  193.     var $link = ''
  194.     var $width = '88'
  195.     var $height = '31'
  196.     var $description = ''
  197.  
  198.  
  199. class rssGenerator_textInput 
  200.     var $title = ''
  201.     var $description = ''
  202.     var $name = ''
  203.     var $link = ''
  204.  
  205.  
  206. class rssGenerator_item 
  207.     var $title = ''
  208.     var $description = ''
  209.     var $link = ''
  210.     var $author = ''
  211.     var $pubDate = ''
  212.     var $comments = ''
  213.     var $guid = ''
  214.     var $guid_isPermaLink = true; 
  215.     var $source = ''
  216.     var $source_url = ''
  217.     var $enclosure_url = ''
  218.     var $enclosure_length = '0'
  219.     var $enclosure_type = ''
  220.     var $categories = array(); 
  221.  
  222. //开源代码Vevb.com 
  223. ?> 

php使用实例如下:

  1. <?php 
  2. require_once 'rss_generator.inc.php'
  3. $rss_channel = new rssGenerator_channel(); 
  4. $rss_channel->atomLinkHref = ''
  5. $rss_channel->title = 'My News'
  6. $rss_channel->link = 'http://Vevb.com/news.php'
  7. $rss_channel->description = 'The latest news about web-development.'
  8. $rss_channel->language = 'en-us'
  9. $rss_channel->generator = 'PHP RSS Feed Generator'
  10. $rss_channel->managingEditor = 'editor@mysite.com (Alex Jefferson)'
  11. $rss_channel->webMaster = 'webmaster@mysite.com (Vagharshak Tozalakyan)'
  12.  
  13. $item = new rssGenerator_item(); 
  14. $item->title = 'New website launched'
  15. $item->description = 'Today I finaly launch a new website.'
  16. $item->link = 'http://Vevb.com'
  17. $item->guid = 'http://Vevb.com'
  18. $item->pubDate = 'Tue, 07 Mar 2006 00:00:01 GMT'
  19. $rss_channel->items[] = $item
  20.  
  21. $item = new rssGenerator_item(); 
  22. $item->title = 'Another website launched'
  23. $item->description = 'Just another website launched.'
  24. $item->link = 'http://Vevb.com'
  25. $item->guid = 'http://Vevb.com'
  26. $item->pubDate = 'Wed, 08 Mar 2006 00:00:01 GMT'
  27. $rss_channel->items[] = $item
  28.  
  29. $rss_feed = new rssGenerator_rss(); 
  30. $rss_feed->encoding = 'UTF-8'
  31. $rss_feed->version = '2.0'
  32. header('Content-Type: text/xml'); 
  33. echo $rss_feed->createFeed($rss_channel); 
  34. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表