用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6897|回复: 8
收起左侧

[已解决] 如何给网站做一个RSS功能

[复制链接]
发表于 2011-8-13 16:16:16 | 显示全部楼层 |阅读模式
比如看到很多博客和网站都有http://site.com/feed,然后打开就是一个rss feed,用php或者ci要怎么实现啊?给个思路

发表于 2011-8-13 16:58:28 | 显示全部楼层
按照那个格式输出文本就是啦
 楼主| 发表于 2011-8-14 14:31:44 | 显示全部楼层
我参照网上的文章做了一下,http://localhost/ci_volunteers/index.php/feed,出现以下的问题:
XML解析错误:xml处理指令不在实体的开始部分
位置:http://localhost/ci_volunteers/index.php/feed
行:1,列:3:  <?xml version="1.0" encoding="UTF-8"?>
--^

这个问题只在firefox和chrome出现,IE能正常显示RSS内容。查了原因,跟这篇文章描述的原因一致,

http://www.99jianzhan.com/jz/service/discuz-xml-error/

但这是Discuz的问题,我想知道CI框架里导致这一问题发生的始作俑者在哪儿?如何解决?
发表于 2011-8-14 14:38:43 | 显示全部楼层
很可能是BOM
 楼主| 发表于 2011-8-14 14:48:55 | 显示全部楼层
本帖最后由 phoenixg 于 2011-8-14 14:49 编辑
visvoy 发表于 2011-8-14 14:38
很可能是BOM

我用editplus把模型视图控制器的有关文件都另存成不含bom的格式,还是不行
顺便问下,什么是bom
 楼主| 发表于 2011-8-14 14:50:52 | 显示全部楼层
我把所有有关文件末尾的?>去掉后,问题就解决了!
发表于 2011-8-15 11:35:20 | 显示全部楼层
PHP复制代码
 
<?php
$sql = "select * from is_haigui where status=1 order by created desc limit 5";
$query = $this->db->query($sql);
$result = $query->result_array();
$sql = "select * from is_photo where status=1 order by created desc limit 5";
$query = $this->db->query($sql);
$result1 = $query->result_array();
$sql = "select * from is_event where status=1 order by created desc limit 3";
$query = $this->db->query($sql);
$result2 = $query->result_array();
$sql = "select * from is_investment where status=1 order by created desc limit 1";
$query = $this->db->query($sql);
$result3 = $query->result_array();
$sql = "select * from is_job where status=1 order by created desc limit 1";
$query = $this->db->query($sql);
$result4 = $query->result_array();
$sql = "select * from pw_threads where ifcheck=1 order by postdate desc limit 5";
$query = $this->db->query($sql);
$result5 = $query->result_array();
$sql = "select * from pw_threads where ifcheck=1 order by lastpost desc limit 20";
$query = $this->db->query($sql);
$result6 = $query->result_array();
$now = date("D, d M Y H:i:s T");
 
$output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
            <rss version=\"2.0\">
                <channel>
                    <title>RSS</title>
                    <link>http://localhost/rss/index.php/rss</link>
                    <description>A Test RSS</description>
                    <language>zh-cn</language>
                    <pubDate>$now</pubDate>
                    <lastBuildDate>$now</lastBuildDate>
                    <docs>http://www.rss.com</docs>
                    <managingEditor>info@rss.com</managingEditor>
                    <webMaster>info@rss.com</webMaster>
            "
;
           
for ($i=0;$i<count($result);$i++)
{
    $output .= "<item><title>[海归]".$result[$i]['name']."</title>
                    <link>"
.site_url('haigui/detail/'.$result[$i]['id'])."</link>
                   
<description>"
.strip_tags($result[$i]['title'])."</description>
                </item>"
;
}
for ($i=0;$i<count($result1);$i++)
{
    $output .= "<item><title>[随拍]".$result1[$i]['name']."</title>
                    <link>"
.site_url('suipai/viewphoto/'.$result1[$i]['id'])."</link>
                   
<description>"
.strip_tags($result1[$i]['title'])."</description>
                </item>"
;
}
 
for ($i=0;$i<count($result2);$i++)
{
    $output .= "<item><title>[活动]".$result2[$i]['name']."</title>
                    <link>"
.site_url('event/getdetail/'.$result2[$i]['id'])."</link>
                   
<description></description>
                </item>"
;
}
 
for ($i=0;$i<count($result3);$i++)
{
    $output .= "<item><title>[商务]".$result3[$i]['iname']."</title>
                    <link>"
.site_url('investor/getdetail/'.$result3[$i]['id'])."</link>
                   
<description></description>
                </item>"
;
}
 
for ($i=0;$i<count($result4);$i++)
{
    $output .= "<item><title>[招聘]".$result4[$i]['jname']."</title>
                    <link>"
.site_url('job/getdetail/'.$result4[$i]['id'])."</link>
                   
<description></description>
                </item>"
;
}
 
for ($i=0;$i<count($result5);$i++)
{
    $output .= "<item><title>[故事]".$result5[$i]['subject']."</title>
                    <link>"
.base_url().'bbs/read.php?tid='.$result5[$i]['tid']."</link>
                   
<description></description>
                </item>"
;
}
 
for ($i=0;$i<count($result6);$i++)
{
    $output .= "<item><title>[最新回复]".$result6[$i]['subject']."</title>
                    <link>"
.base_url().'bbs/read.php?tid='.$result6[$i]['tid']."</link>
                   
<description></description>
                </item>"
;
}
$output .= "</channel>
</rss>"
;
header("Content-type: application/xml");
echo $output;
?>
 
 
复制代码


可以参考下我做的这个....主要就是xml格式而已,弄好了很easy
 楼主| 发表于 2011-8-15 20:48:53 | 显示全部楼层
zhouli520 发表于 2011-8-15 11:35
可以参考下我做的这个....主要就是xml格式而已,弄好了很easy

谢谢楼上提供的参考!
发表于 2011-11-30 14:04:35 | 显示全部楼层
mark.

本版积分规则