邪罗刹的菠萝阁


> O(∩_∩)O,小邪突然想写一个可以获取某个指定网站的最新的一条 RSS 内容与链接的程序。
> 这个程序自带缓存功能,RSS 地址的缓存时间是 15 天,RSS 内容的缓存时间是 2 小时。

> Xml 函数实在弄得小邪有些头大,一时半会儿没有空去花时间看看文档,所以就正则咯。
> 其实这个程序是当初答应 菠萝 要写的,现在刚刚好小邪的 PHP 有些入门了,就去搞定它咯。

一. 程序使用介绍:

> 使用下面的代码调用即可,因为小邪输出的是 JavaScript 代码,调用很是方便呢,嘻嘻。
> Url 参数直接填域名就好,别加 http 什么的了,也别加斜杠了,小邪把程序精简一点儿。
> 所以直接加了个只允许 “A-Z a-z 0-9 - _ .” 这些字符出现在 Url 里面,应该不会很麻烦。

<script src="do.php?url=wange.im" />

> 然后程序会输出这个样子的一段代码,带链接与标题文字,并且从新窗口打开,呵呵。

document.write("<a target='_blank'
href='http://wange.im/winters-past-present-and-future.html'>
寒假的过去、现在和未来</a>");

二. 源代码:

> 把源代码保存成 Do.php 然后放到任意目录即可,嘎嘎,O(∩_∩)O 祝你玩得愉快喔。

<?php
$rssurl_save_time = '1296000';
$rsscont_save_time = '7200';
//Evlos.org application
if (!is_dir('cache')) { mkdir('cache'); }
function app_js_out($url,$cont) {
	return 'document.write("'."<a target='_blank' href='".$url."'>".$cont.'</a>");';
}
function app_html_get($url) {
	$curl = curl_init($url);
	$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1)
Gecko/20061204 Firefox/2.0.0.1";
	curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
	curl_setopt ($curl,CURLOPT_USERAGENT,$useragent);
	$ret = curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
	$data = curl_exec($curl);
	curl_close($curl);
	return $data;
}
function app_get_rssurl($url) {
	$data = app_html_get($url);
	preg_match('/application\/rss\+xml\" title=\"[^\"]+\" href=\"(.*)\"/',$data,$s);
	if (preg_match('/^http.+/',$s[1])) {
		return $s[1];
	}
	else {
		return 'http://'.$url.$s[1];
	}
}
function app_websiteinfo($url) {
	$u = str_replace('.','_',$url);
	$file = './cache/rssurl_-_'.$u.'.txt';
	if (file_exists($file)||(time()-filemtime($file))<$rssurl_save_time) {
		$cont = file_get_contents($file);
		return $cont;
	}
	else {
		$rssurl = app_get_rssurl($url);
		$handle = fopen($file,'w+');
		fwrite($handle,$rssurl);
		fclose($handle);
		return $rssurl;
	}
}
function app_get_rssread($url) {
	$data = app_html_get($url);
	preg_match_all('/<title>([^<]+)<\/title>/',$data,$s);
	$rss['title'] = $s[1][1];
	preg_match_all('/<link>([^<]+)<\/link>/',$data,$c);
	$rss['link'] = $c[1][1];
	return $rss;
}
function app_rss_getnew($url,$host) {
	$u = str_replace('.','_',$host);
	$file = './cache/rssnew_-_'.$u.'.txt';
	if (file_exists($file)||(time()-filemtime($file))<$rsscont_save_time) {
		$cont = file_get_contents($file);
		$rsso = explode("||",$cont);
		$rssc['title'] = $rsso[0];
		$rssc['link'] = $rsso[1];
		return $rssc;
	}
	else {
		$rssc = app_get_rssread($url);
		$handle = fopen($file,'w+');
		fwrite($handle,$rssc['title'].'||'.$rssc['link']);
		fclose($handle);
		return $rssc;
	}
}
if (isset($_GET['url'])) {
	$url = $_GET['url'];
	if (!preg_match('/^[a-zA-z0-9_\.-]+$/',$url)) {
		echo app_js_out('','Error');
	}
	else {
		$feedurl = app_websiteinfo($url);
		$rssc = app_rss_getnew($feedurl,$url);
		echo app_js_out($rssc['link'],$rssc['title']);
	}
}
else {
	echo app_js_out('','Error');
}
//Evlos.org application
?>

三. 附言:

> 有朋友用过 HTC Hero 吗?有啥感想没有,小邪觉得 5310xm 太杯具鸟,所以打算换一换。

Leave a comment
131 Comments.
  1. 第三眼 Google Chrome Windows 坐沙发!#1

    沙发?

    @
  2. Auston Jary Mozilla Firefox Windows 坐板凳!#2

    沙发?

    @
  3. 第三眼 Google Chrome Windows 躺地板!#3

    我的博客公园

    @
  4. bolo Mozilla Firefox Windows 天花板!#4

    网名叫菠萝的人真多

    @
  5. 真好网 Mozilla Firefox Ubuntu Linux 下水道!#5

    没有玩过HTC Hero,我只玩过 HTC HD,HTC 钻石,HTC TOUCH VIVA,当然还有我的 CHT9000,看那个摇杆很不错~~~

    @
  6. fatkun Mozilla Firefox Windows 地心!#6

    感觉用正则处理不是最适合的方法。。不过简单。。

    @
  7. 学习学习。对PHP不是很懂。还是要多学习一下。

    @
  8. 想要Hero?太贵了,不过体验很好,回头率很高。 :mrgreen:

    @
    • @Hailo,
      Hero是Android平台里最帅最靓的一款,尤其是小白。。
      不过由于蓝牙问题,却差生了一个囧笑的问题,拿着山寨机的人和Hero蓝牙传东西,他们笑这是什么破手机,连蓝牙都不能用,HTC没听说过。。

      @
    • @Hailo , Hero 一直在降价呢,现在 Hd2 和 Nexus 倒是很贵的说 ~

      @
  9. 那手机很漂亮哦。

    @
  10. 这个程序倒是挺不错的啦, 悄悄 问一声 可以生成多条RSS 吗?

    @
  11. 那不是可以做出RSS聚集的页面,比如 http://www.wpg.im/rssa/

    @
    • @林木木 , 呵呵,可以的 ~
      现在只是直接读了每个博客的第一条文章而已 ~
      而且如果是整合性程序,就是一次显示一大堆博客的那种 ~
      还是重新写一下比较好,呵呵,这样效率不是很高 ~

      @
      • @邪 罗刹,
        我想的是显示一大堆博客的第一条,然后按时间排列,取前面部分几篇或者几十篇缓,再隔时更新。
        这样会不会对服务器的压力很大?代码好些吗?
        行的话能不能帮WPG做一个呢?

        @
    • @林木木 , 囧,小邪的审核列表有一百来行,等下查查哪里出错了,竟然老是要审核你的评论 ~
      ------------------
      呵呵,可以的,如果要小邪做的话,大概得稍稍推迟一点点了 ~
      因为小邪明天要去上海做签证,然后后面几天还要去杭州中介公司做培训 ~
      接着2月初要到荷兰上大学了,要等安定下来 ~
      不过运气好的话,小邪下星期周末还是有时间写的呢 ~
      ------------------
      程序不是很难,服务器压力还好,小邪可以弄个队列,而不是一次一大堆RSS一起读取 ~
      你的意思是在同一页列出一大堆博客,然后个博客的位置都显示最新的一条 ~
      而博客的顺序则按照更新顺序吧?对了,前台小邪就没那么多时间弄了 ~
      嘻嘻,反正wpg高手很多 ~
      ------------------
      额,有个小问题,貌似 Joya 对小邪的印象不是很好 ~
      有几次到她博客留言和新年祝福,结果全被删除了 ~ 杯具 ~

      @
      • @邪 罗刹,
        先说说程序,首先说明一点,不是每个博客都必须要显示一条,不然用Google的RSS就可以了,如:http://immmmm.com/links 内的RSS订阅展示;
        我再描述详细点:获取每个博客RSS内的第一篇文章及发布时间,然后以发布时间为序排列,再而只需输出排序后前部分文章即可。
        -----------------------
        出国深造,恭喜恭喜!
        ------------------
        Joya姐俺也好久没联系她了……

        @
    • @林木木 , 哦,等于一个时间轴一样,貌似有点懂鸟 ~ 哈哈 ~
      “获取每个博客RSS内的第一篇文章及发布时间,然后以发布时间为序排列,再而只需输出排序后前部分文章即可。”
      就是 1. 每个博客只获取第一篇文章的链接、标题和发布时间
      2. 按照发布时间排序,而不是每个博客都要显示
      3. 取前部分文章
      这样,好的,小邪会尽量在下星期周末完成 ~
      其他也不管了,嘻嘻,到时候随你怎么弄 O(∩_∩)O ~
      底部留个链接给小邪就好,呵呵 ~

      @
      • @邪 罗刹,
        嗯,你有空时折腾就行了,当然能立马做出来那当然好,不过不能耽误你的正事儿!
        如果WPG采用了话,绝对会有申明的,代码作者谁,页面美化谁~

        @
    • @林木木 , 呵呵,那好的,晚安罗 ~ :biggrin:

      @
  12. 那你要把每个人的最新日志都显示在回复的后面么?这样看起来比较帅~

    @
  13. WP有这个发代码的插件,我在Zblog中就没找到。。

    @
  14. 代码厉害,图更厉害 :biggrin:

    @
  15. 听说HTC Hero VERY费电,费电 VERY MUCH! :mrgreen:

    @
  16. 这款就是传说中g3,g1-g4中目前性能最好的也是价格最高的,玩过半天,确实不错;其实钱多可以买Nexus One,不过至少俺是穷人

    @
  17. 这个WP有自带的函数可以搞定哦,fetch_rss、wp_rss、get_rss,不过我没有仔细研究过
    PS,图片很爽,爽歪歪~

    @
  18. 很爽啊,我也想入手个Android手机,就是太贵了,不行的话,先弄个M8玩玩吧

    @
  19. 把我丢脑后了吧,关键时刻还是我好呀,嘿嘿。。
    简单说一下,感觉Hero还行吧,用起来挺顺手的,小屁股也很帅,出来一段时间了,配置自然比不上新出的,G4、Nexus,拍照效果也不错,见http://shuaige.me/my-phone-hero.orz

    @
  20. 没有用自己的博客做效果呢。。我还想测试下

    @
  21. 有个同学在用hero,他说还不错~
    你可以试试看,其实htc的机器还是可以的~随着Symbian系统的没落,更多新兴的开源手机系统将有机会占据更大的市场空间~

    @
  22. 我进入淫荡的传送门了 O(∩_∩)O哈哈~

    @
  23. 哇塞,你终于写获取rss了,而且这么经典
    叫我怎么不折服呢?太感谢啦

    @
  24. :confused: 差不多4500-5000 RMB啊··
    小邪那么有米···
    我还在用着N 3250··
    不过倒是很想买台安致(Android貌似是注册了这个中文名)系统的手机··

    @
  25. HTC Hero 感觉还是不错呢。样子很酷。 :mrgreen:

    @
  26. 年后要不就hero。。
    要不就再忍忍收入佳能500D。。
    又或者直接入手G2 不等了~~
    抉择啊。。工作了小半年。。终于能买样心头好。。 :cry:

    @
  27. 小邪永远都是那么邪,俺就是过来只看图片不看文的那个。

    @
  28. 这个也很强悍....小邪...我也要学php 之后盗用你的东西 哈哈哈哈

    @
  29. 怪不得看到很多人博客的评论栏下面多了选项(是否显示博客文章)哦。

    用G2的飘过,很好用,扩展太强大了。

    @
  30. 呵呵. 好强大... 期待更强大啊.. :rolleyes:

    @
  31. 听朋友给hero的评价蛮高的,可以考虑。

    @
  32. 也就是说PHP可以读网页源代码是么?这个挺强的 :lol:
    HTC Hero从未听说过,我手机还是蓝屏时代呢 :exclaim:

    @
  33. Fucking with RSS!

    @
  34. 代码看不懂。HTC Hero我用过,轨迹球挺好用。只是它的媒体这一块做的不是很顺手,没有iphone好用。

    @
  35. 我闹死心了,虽然放假了但是不得不做的作业还是把我挤的没时间,等我有大块时间的时候我一定天天缠着你学PHP!你跑不了了。 :rolleyes:

    @
  36. :biggrin: 最后的手机是亮点

    @
  37. 为什么我使用你的代码实验的时候总是出错呢?奇了怪了。

    @
  38. 其他的插不上话,但HTC Hero 很牛X! :rolleyes:

    @
  39. 类似的文章我好像也发过!

    @
  40. 这个和菠萝那个评论显示rss插件原理一样吗?不错!

    @
  41. 小邪!太棒了!

    你写的代码太棒了!!!正好有用!也省得你再去写代码了。

    还有,你这个如果改成调用5条,该如何改?

    @
  42. 好像是群里的泡面前段时间到手一款HTC,看着很爽的样子。

    @
  43. 一条足矣,借你的源码我去弄个emlog的插件玩玩

    @

Leave a Reply


[ Ctrl + Enter ]