PHP 函数调用输出 RSS 以及显示最后修改时间

今天中午休息的时候忽然写了几段代码解决了主页上的两个久未解决的 PHP 问题。 1、主页抓 rss,抓不住 pubDate,抓耳挠腮估计有三个星期解决不了,看了好多代码改了好多次,今天一拍脑袋,怕不是大小写问题吧?把 pubDate 改成 pubdate 以后立马解决了,愚蠢啊……

//RSS funciton
function rssoutput($feedaddress)
{
$rssfeed = array($feedaddress);
//header('Content-Type:text/html;charset= UTF-8');
for($i=0;$i<sizeof($rssfeed);$i++){
$buff = "";
$rss_str="";
//打开 rss 地址,并读取,读取失败则中止
$fp = fopen($rssfeed[$i],"r") or die("can not open $rssfeed");
while ( !feof($fp) ) {
$buff .= fgets($fp,4096);
}
//关闭文件打开
fclose($fp);
//建立一个 XML 解析器
$parser = xml_parser_create();
//xml_parser_set_option -- 为指定 XML 解析进行选项设置
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
//xml_parse_into_struct -- 将 XML 数据解析到数组 $values 中
xml_parse_into_struct($parser,$buff,$values,$idx);
//xml_parser_free -- 释放指定的 XML 解析器
xml_parser_free($parser);
foreach ($values as $val) {
$tag = $val["tag"];
$type = $val["type"];
$value = $val["value"];
//标签统一转为小写(忘了这茬儿,搞了三星期) 
$tag = strtolower($tag);
if ($tag == "item" && $type == "open"){
$is_item = 1;
}else if ($tag == "item" && $type == "close") {
//构造输出字符串
$rss_str .= "<li class='first'><a href='".$link."' title='".$description;
$rss_str .= "' target=_blank>".$title."</a>&nbsp;(".$pubDate.")</li>";
$is_item = 0;
}
//仅读取 item 标签中的内容
if($is_item==1){
if ($tag == "title") {$title = $value;}
if ($tag == "link") {$link = $value;}
if ($tag == "pubdate") //就是这里这个 pub_D_ate 啦!
</span> {
$pubDate = date('Y-m-d',strtotime($value));
}
if ($tag == "description") {$description = substr_cut($value);}
}
}
//输出结果
echo $rss_str."<br />";
}
}
?>

2、本来在页脚用 Javascript 写了小函数,可以显示 2005-2010(今年)和 Last modified:2010-12-29,但是 js 的最大问题是浏览器兼容性,在 IE 正常了在 Firefox 不正常,花了一番功夫写了两段判断函数,发现在 Google Chrome 里显示 “Nah”(无),到了 Opera 更是直接不显示了……今天趁着改写上面代码成功的东风一鼓作气,轻松写了两句 PHP 就彻底的搞定了日期问题,不能不感慨 PHP 的强大。代码共享:

<?php
//设置 Locale,其实在本段没什么用
setlocale(LC_TIME, "zh_CN");
//设置默认时区,只在 PHP 5.1 开始后才有用。为啥要设,因为你的主机搞不好就在米国。这里设置为上海。
//注意:UTC 时区是没有 Asia/Beijing 的!只有 Asia/Shanghai 和 Asia/Chongqing!看来美国人还是搞的
//从前那一套哇。北京杯具了
date_default_timezone_set('Asia/Shanghai');
$today = date('Y');
echo "(C) 2005 - ";
echo $today;
echo ' <a href="">http://synyan.net</a> All rights reserved. ';
echo "Last modified: " . date ("Y-m-d  H:i:s", getlastmod()) ." UTC+8.";
?>

效果:

PHP函数调用输出RSS
PHP 函数调用输出 RSS

共有 8 条评论

  1. Unknown Unknown Unknown Unknown

    虎哥,越搞越迷糊了 这个 RSS funciton 究竟是复制到 wordpress 的哪个文件?是 index.php 还是 function.php?可以详细说说怎么用吗

Ryu井进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注