今天中午休息的时候忽然写了几段代码解决了主页上的两个久未解决的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. ric83311

    上海

    技术贴。。。

    十四年前 Maxthon 2 · Windows XP

    回复

    • S

      江苏

      @ric83311 很有用的,呵呵。这个代码蛮好用的,而且经过我修改后哪里都能用,且不需要wordpress核心

      十四年前 Firefox 3 · Windows 7

      回复

      • ric83311

        香港

        @S 农哈节棍,我负责膜拜就好

        十四年前 Firefox 3 · Windows XP

        回复

  2. ric83311

    上海

    @老虎
    这种模板啦,语言啦,曾经刚毕业的我还有心想弄,现在最好都是现成的,我往里填博文照片就好

    十四年前 Maxthon 2 · Windows XP

    回复

  3. S

    江苏

    @ric83311
    有啊 wordpress.com里面就有很多

    十四年前 Firefox 3 · Windows 7

    回复

  4. Ryu井

    广东

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

    十一年前 Unknown · Unknown

    回复

    • S

      江苏

      @Ryu井 都可以。我是在首页单独做了一个静态php页面。本函数放在静态页面里,用<?php > 框起来。

      十一年前 Unknown · Unknown

      回复

       

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注