Hi everyone !
I am a newbie to this newsgroup. I would appreciate if someone can help
me to solve this problem.
OK, I am currently writing a webpage in PHP that will get RSS file(XML
file) (news feed) and parse it using PHP and display articles' link and
description. I want everytime a user click on one article's link, it
take the user to another page which was written by me (for example,
"display.php?aid=43232") (I don't want user to leave my website) and
pass the article ID to the URL string. Everything run fine at this
point but I got duplicate filename on the URL
("display.php?aid=43232&display.php="). I don't know how to fix this.
Here is the code.
================== Code for RSS parsing ======================
//This code was copied from the following tutorial.
//http://www.sitepoint.com/article/php-xml-parsing-rss-1-0
<html>
<head>
<title> The core </title>
</head>
<body>
<dl>
<?php
class RSSParser {
var $insideitem = false;
var $tag = "";
var $title = "";
var $description = "";
var $link = "";
function startElement($parser, $tagName, $attrs) {
if ($this->insideitem) {
$this->tag = $tagName;
} elseif ($tagName == "ITEM") {
$this->insideitem = true;
}
}
function endElement($parser, $tagName) {
if ($tagName == "ITEM") {
printf("<dt><b><a href='%s'>%s</a></b></dt>",
trim($this->link),htmlspecialchars(trim($this->title)));
printf("<dd>%s</dd>",htmlspecialchars(trim($this->description)));
$this->title = "";
$this->description = "";
$this->link = "";
$this->insideitem = false;
}
}
function characterData($parser, $data) {
if ($this->insideitem) {
switch ($this->tag) {
case "TITLE":
$this->title .= $data;
break;
case "DESCRIPTION":
$this->description .= $data;
break;
//edit the link here
case "LINK":
{
//$this->link .= $data
$id = $this->newLink($data);
$this->link .= "display.php?aid="."$id&";
break;
}
}
}
}
function newLink($newslink)
{
$file_name = basename($newslink, ".php");
$id = ereg_replace("[^0-9]", "", $file_name);
return $id;
}
}
$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();
xml_set_object($xml_parser,&$rss_parser);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen("http://www.prweb.com/rss2/computers.xml","r")
or die("Error reading RSS data.");
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($xml_parser);
?>
</dl>
</body>
</html>
=================================================
========= Code for display.php =========
<?php
echo "<h1>Display news </h1>";
$id = $_GET["aid"];
$baseLink = "http://www.prweb.com/printer.php?prid=";
include($baseLink.$id);
?>
========================================
Thank you in advance .
John Lam