找回密码
 注册账户
查看: 1306|回复: 1

Simple RSS Reader Script

[复制链接]
棋子 发表于 2007-8-8 13:54:54 | 显示全部楼层 |阅读模式
Here is a script that you can use to read rss feeds, please take note this script don’t work to atom.xml.

If you want to learn more tweak about this script you can go to Digital point. This script was provided by ysf1 a senior member of DP.

You can modify or tweak this script to make it more powerful. Use the first script if you plan to use single rss feed only and the second code if you plan to rotate a feed.

To make this rss feed reader work, you need to replace the rss feed url with the source you want.
  1. <?php
  2. $insideitem = false;
  3. $tag = "";
  4. $title = "";
  5. $description = "";
  6. $link = "";
  7. function startElement($parser, $name, $attrs) {
  8. global $insideitem, $tag, $title, $description, $link;
  9. if ($insideitem) {
  10. $tag = $name;
  11. } elseif ($name == "ITEM") {
  12. $insideitem = true;
  13. }
  14. }
  15. function endElement($parser, $name) {
  16. global $insideitem, $tag, $title, $description, $link;
  17. if ($name == "ITEM") {
  18. printf("<dt><b><a href=’%s’>%s</a></b></dt>",
  19. trim($link),htmlspecialchars(trim($title)));
  20. printf("<dt>%s</dt><br><br>",htmlspecialchars(trim($description)));
  21. $title = "";
  22. $description = "";
  23. $link = "";
  24. $insideitem = false;
  25. }
  26. }
  27. function characterData($parser, $data) {
  28. global $insideitem, $tag, $title, $description, $link;
  29. if ($insideitem) {
  30. switch ($tag) {
  31. case "TITLE":
  32. $title .= $data;
  33. break;
  34. case "DESCRIPTION":
  35. $description .= $data;
  36. break;
  37. case "LINK":
  38. $link .= $data;
  39. break;
  40. }
  41. }
  42. }
  43. $xml_parser = xml_parser_create();
  44. xml_set_element_handler($xml_parser, "startElement", "endElement");
  45. xml_set_character_data_handler($xml_parser, "characterData");
  46. $fp = fopen("http://michaelthompson.org/news/goo-world.xml","r")
  47. or die("Error reading RSS data.");
  48. while ($data = fread($fp, 4096))
  49. xml_parse($xml_parser, $data, feof($fp))
  50. or die(sprintf("XML error: %s at line %d",
  51. xml_error_string(xml_get_error_code($xml_parser)),
  52. xml_get_current_line_number($xml_parser)));
  53. fclose($fp);
  54. xml_parser_free($xml_parser);
  55. ?>
复制代码


The second script
  1. <?php
  2. $insideitem = false;
  3. $tag = "";
  4. $title = "";
  5. $description = "";
  6. $link = "";
  7. $locations = array(’[url]http://michaelthompson.org/news/goo-world.xml[/url]’, ‘[url]http://forums.seochat.com/external.php[/url]’, ‘[url]http://michaelthompson.org/news/goo-world.xml[/url]’);
  8. srand((float) microtime() * 10000000); // seed the random gen
  9. $random_key = array_rand($locations);
  10. function startElement($parser, $name, $attrs) {
  11. global $insideitem, $tag, $title, $description, $link;
  12. if ($insideitem) {
  13. $tag = $name;
  14. } elseif ($name == "ITEM") {
  15. $insideitem = true;
  16. }
  17. }
  18. function endElement($parser, $name) {
  19. global $insideitem, $tag, $title, $description, $link;
  20. if ($name == "ITEM") {
  21. printf("<dt><b><a href=’%s’ target=new>%s</a></b></dt>",
  22. trim($link),htmlspecialchars(trim($title)));
  23. printf("<dt>%s</dt><br><br>",htmlspecialchars(trim($description)));
  24. $title = "";
  25. $description = "";
  26. $link = "";
  27. $insideitem = false;
  28. }
  29. }
  30. function characterData($parser, $data) {
  31. global $insideitem, $tag, $title, $description, $link;
  32. if ($insideitem) {
  33. switch ($tag) {
  34. case "TITLE":
  35. $title .= $data;
  36. break;
  37. case "DESCRIPTION":
  38. $description .= $data;
  39. break;
  40. case "LINK":
  41. $link .= $data;
  42. break;
  43. }
  44. }
  45. }
  46. $xml_parser = xml_parser_create();
  47. xml_set_element_handler($xml_parser, "startElement", "endElement");
  48. xml_set_character_data_handler($xml_parser, "characterData");
  49. $fp = fopen($locations[$random_key], ‘r’)
  50. or die("Error reading RSS data.");
  51. while ($data = fread($fp, 4096))
  52. xml_parse($xml_parser, $data, feof($fp))
  53. or die(sprintf("XML error: %s at line %d",
  54. xml_error_string(xml_get_error_code($xml_parser)),
  55. xml_get_current_line_number($xml_parser)));
  56. fclose($fp);
  57. xml_parser_free($xml_parser);
  58. ?>
复制代码
coodong 发表于 2009-1-8 08:00:01 | 显示全部楼层
ע:
您需要登录后才可以回帖 登录 | 注册账户

本版积分规则

存档|黑屋|手机|网络实验室 本站服务器由美国合租以及IDCLayer国际数据提供!!!

GMT+8, 2026-6-5 03:10 , Processed in 0.011490 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表