php技巧-把RSS内容写入数据库实例教程

有时候,你需要在一个自己另外的网站上调用文章,可是,你又懒得每次去录入更新,如果不在一个主机上,远程连接数据库又不是很好的注意,那么怎么办?抓取!

如果去写个抓取的程序,是比较麻烦的,而且,也可能带来临时的速度影响。好在,可以获取RSS,这样比较方面。

如何用php获取RSS的示例,我前面有写过一篇文章:http://blog.xukhost.com/2819.html

但是,这样的做法,会造成每次打开网站都变慢,而且如果另一个站挂了还会拖慢更多。那么怎么办呢?写个定时脚本,把抓取的数据写入数据库,但是每次打开页面是从数据库查询即可。大家先去看我前面的那个文章。然后得到一些代码,那么这里面有个地方可以利用,看这里:

  1. //构造输出字符串 ,显示的地方,可以自定义!
  2. $rss_str .= “<div class=\”result_list\”><a href='”.$link.“‘ target=_blank>”.$title.“</a></div><div class=\”line\”></div>”;
  3. $is_item = 0;

这个地方是把数据处理了,最后面 echo $rss_str; 的。那么,我们就修改这里,改为SQL语句即可。

  1. $sqlup = “INSERT INTO  `dbname`.`rss_news` (`id`,`title`,`link`) VALUES (”,  ‘”.$title.“‘,  ‘”.$link.“‘)”;
  2. mysql_query($sqlup,$mysql);
  3. $sqlin=mysql_insert_id();

当然了,你需要写一个连接数据库的配置信息,和建立相关的数据表和字段,详情查看我前面写的php教程:

http://blog.xukhost.com/3023.html   and  http://blog.xukhost.com/3064.html

数据库的话,可以执行下面的语句来添加数据表和字段:

  1. CREATE TABLE `sdt_news` (
  2.   `id` int(2) NOT NULL auto_increment,
  3.   `title` varchar(128) NOT NULL,
  4.   `link` varchar(64) NOT NULL,
  5.   UNIQUE KEY `id` (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

这里会建立一个 sdt_news 的数据表,同时建立“id、title、link”三个字段。

请自己在本地环境测试该功能,完成后再上线,如果完全看不懂或者部分不懂,请付费联系解决。

QQ  184923973

网站整合必备-php调用RSS订阅显示最新文章方法

前几天撤掉了bbs.sdtclass.com这个社区,然后用这个域名改版为网盘,想到了网盘调用本站最新文章,去百度了一圈,发现要不是调用的没有连接,要不调用的有乱码,于是后来结合修改得到了下面的代码!空间服务器支持php就行!

代码参考互联网,如下:

  1. <?php
  2. //RSS地址,列如:http://www.sciencenet.cn/xml/news.aspx?news=0
  3. $rssfeed = array(“http://blog.xukhost.com/feed”);
  4. //设置编码为UTF-8 ,没了这个会乱码
  5. header(‘Content-Type:text/html;charset= UTF-8’);
  6. for($i=0;$i<sizeof($rssfeed);$i++){//分解开始
  7. $buff = “”;
  8. $rss_str=“”;
  9. //打开rss地址,并读取,读取失败则中止
  10. $fp = fopen($rssfeed[$i],“r”or die(“can not open $rssfeed”);
  11. while ( !feof($fp) ) {
  12. $buff .= fgets($fp,4096);
  13. }
  14. //关闭文件打开
  15. fclose($fp);
  16. //建立一个 XML 解析器
  17. $parser = xml_parser_create();
  18. //xml_parser_set_option — 为指定 XML 解析进行选项设置
  19. xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
  20. //xml_parse_into_struct — 将 XML 数据解析到数组$values中
  21. xml_parse_into_struct($parser,$buff,$values,$idx);
  22. //xml_parser_free — 释放指定的 XML 解析器
  23. xml_parser_free($parser);
  24. foreach ($values as $val) {
  25. $tag = $val[“tag”];
  26. $type = $val[“type”];
  27. $value = $val[“value”];
  28. //标签统一转为小写
  29. $tag = strtolower($tag);
  30. if ($tag == “item” && $type == “open”){
  31. $is_item = 1;
  32. }else if ($tag == “item” && $type == “close”) {
  33. //构造输出字符串 ,显示的地方,可以自定义!
  34. $rss_str .= “<div class=\”result_list\”><a href='”.$link.“‘ target=_blank>”.$title.“</a></div><div class=\”line\”></div>”;
  35. $is_item = 0;
  36. }
  37. //仅读取item标签中的内容
  38. if($is_item==1){
  39. if ($tag == “title”) {$title = $value;}
  40. if ($tag == “link”) {$link = $value;}
  41. }
  42. }
  43. //输出结果
  44. echo $rss_str;
  45. }
  46. ?>

把上面的代码,放在要显示调用RSS的地方即可,RSS地址格式不限制,只要该地址是RSS显示的就可以了!比如我在网上找的这个【ttp://www.sciencenet.cn/xml/news.aspx?news=0】,也可以调用,人家网站是ASP的!

效果示例:

wordpress技巧-免插件自动同步文章到微博

大家都用过wordpress的自动分享插件吧,不过大家也知道,这些插件都挺占用内存的,所以我一般不会用这些插件,每次发文章都会手动去分享到几个站点,这样给自己带来了不小工作量,但是为了保证网站更高效的运行也只能这样啦!

最近无聊玩微博的时候发现,其实微博功能还是很强大的,下面就来说说新浪微博,腾讯微博如何快速自动分享,不用插件,不用代码,简单几步设置即可!同样此方法可以应用到其他集成RSS订阅的网站上!

新浪微博

打开新浪微博登录-账号-账号设置,进去后看到下面有个社区绑定,然后选择关联博客,在这里,可以看到网易博客等等博客,然后还有个其他博客,我们只需要选择其他博客,然后输入网址即可,比如我的网站首页地址,然后保存即可,发表文章会有rss输出,这个时候微博就会自动分享出去了,相当于微博系统订阅了你的网站的RSS

腾讯微博

打开腾讯微博然后登陆-点击右上角自己的名字-设置-同步设置-博客同步这里输入自己的网址然后保存即可,也是你发表文章产生了RSS订阅,他就会自动分享!

附上一组图!

上图上部分是新浪的,下部分是腾讯的,腾讯微博可以设置同步到CNTV微博,新华微博和博客校园这几个地方,如果有账号可以绑定,这样就会一次同步几个网站了,搜狐微博和网易微博暂时没有研究方法,下次吧!

PS:

腾讯微博:网站 @sdt技术网 个人 @吴潇伟

新浪微博:网站 @sdt技术网 个人 @yumanutong