本文实例讲述了php实现的RSS生成类。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
class RSS { var $title ; var $link ; var $description ; var $language = "en-us" ; var $pubDate ; var $items ; var $tags ; function RSS() { $this ->items = array (); $this ->tags = array (); } function addItem( $item ) { $this ->items[] = $item ; } function setPubDate( $when ) { if ( strtotime ( $when ) == false) $this ->pubDate = date ( "D, d M Y H:i:s " , $when ) . "GMT" ; else $this ->pubDate = date ( "D, d M Y H:i:s " , strtotime ( $when )) . "GMT" ; } function getPubDate() { if ( empty ( $this ->pubDate)) return date ( "D, d M Y H:i:s " ) . "GMT" ; else return $this ->pubDate; } function addTag( $tag , $value ) { $this ->tags[ $tag ] = $value ; } function out() { $out = $this ->header(); $out .= "<channel>\n" ; $out .= "<title>" . $this ->title . "</title>\n" ; $out .= "<link>" . $this ->link . "</link>\n" ; $out .= "<description>" . $this ->description . "</description>\n" ; $out .= "<language>" . $this ->language . "</language>\n" ; $out .= "<pubDate>" . $this ->getPubDate() . "</pubDate>\n" ; foreach ( $this ->tags as $key => $val ) $out .= "<$key>$val</$key>\n" ; foreach ( $this ->items as $item ) $out .= $item ->out(); $out .= "</channel>\n" ; $out .= $this ->footer(); $out = str_replace ( "&" , "&" , $out ); return $out ; } function serve( $contentType = "application/xml" ) { $xml = $this ->out(); header( "Content-type: $contentType" ); echo $xml ; } function header() { $out = '<?xml version="1.0" encoding="utf-8"?>' . "\n" ; $out .= '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">' . "\n" ; return $out ; } function footer() { return '</rss>' ; } } class RSSItem { var $title ; var $link ; var $description ; var $pubDate ; var $guid ; var $tags ; var $attachment ; var $length ; var $mimetype ; function RSSItem() { $this ->tags = array (); } function setPubDate( $when ) { if ( strtotime ( $when ) == false) $this ->pubDate = date ( "D, d M Y H:i:s " , $when ) . "GMT" ; else $this ->pubDate = date ( "D, d M Y H:i:s " , strtotime ( $when )) . "GMT" ; } function getPubDate() { if ( empty ( $this ->pubDate)) return date ( "D, d M Y H:i:s " ) . "GMT" ; else return $this ->pubDate; } function addTag( $tag , $value ) { $this ->tags[ $tag ] = $value ; } function out() { $out .= "<item>\n" ; $out .= "<title>" . $this ->title . "</title>\n" ; $out .= "<link>" . $this ->link . "</link>\n" ; $out .= "<description>" . $this ->description . "</description>\n" ; $out .= "<pubDate>" . $this ->getPubDate() . "</pubDate>\n" ; if ( $this ->attachment != "" ) $out .= "<enclosure url='{$this->attachment}' length='{$this->length}' type='{$this->mimetype}' />" ; if ( empty ( $this ->guid)) $this ->guid = $this ->link; $out .= "<guid>" . $this ->guid . "</guid>\n" ; foreach ( $this ->tags as $key => $val ) $out .= "<$key>$val</$key\n>" ; $out .= "</item>\n" ; return $out ; } function enclosure( $url , $mimetype , $length ) { $this ->attachment = $url ; $this ->mimetype = $mimetype ; $this ->length = $length ; } } |
使用示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$feed = new RSS(); $feed ->title = "RSS Feed Title" ; $feed ->link = "http://website.com" ; $feed ->description = "Recent articles on your website." ; $db ->query( $query ); $result = $db ->result; while ( $row = mysql_fetch_array( $result , MYSQL_ASSOC)) { $item = new RSSItem(); $item ->title = $title ; $item ->link = $link ; $item ->setPubDate( $create_date ); $item ->description = "<![CDATA[ $html ]]>" ; $feed ->addItem( $item ); } echo $feed ->serve(); |
希望本文所述对大家的php程序设计有所帮助。