phoenixg 发表于 2011-8-13 16:16:16

如何给网站做一个RSS功能

比如看到很多博客和网站都有http://site.com/feed,然后打开就是一个rss feed,用php或者ci要怎么实现啊?给个思路

jeongee 发表于 2011-8-13 16:58:28

按照那个格式输出文本就是啦

phoenixg 发表于 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框架里导致这一问题发生的始作俑者在哪儿?如何解决?

visvoy 发表于 2011-8-14 14:38:43

很可能是BOM

phoenixg 发表于 2011-8-14 14:48:55

本帖最后由 phoenixg 于 2011-8-14 14:49 编辑

visvoy 发表于 2011-8-14 14:38 static/image/common/back.gif
很可能是BOM
我用editplus把模型视图控制器的有关文件都另存成不含bom的格式,还是不行
顺便问下,什么是bom

phoenixg 发表于 2011-8-14 14:50:52

我把所有有关文件末尾的?>去掉后,问题就解决了!

zhouli520 发表于 2011-8-15 11:35:20


<?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

phoenixg 发表于 2011-8-15 20:48:53

zhouli520 发表于 2011-8-15 11:35 static/image/common/back.gif
可以参考下我做的这个....主要就是xml格式而已,弄好了很easy

谢谢楼上提供的参考!

蓝条 发表于 2011-11-30 14:04:35

mark.
页: [1]
查看完整版本: 如何给网站做一个RSS功能