News feed webpage ?

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

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.

<title> The core </title>


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>",

            $this->title = "";
            $this->description = "";
            $this->link = "";
            $this->insideitem = false;


    function characterData($parser, $data) {
        if ($this->insideitem) {
        switch ($this->tag) {
            case "TITLE":
                $this->title .= $data;
            case "DESCRIPTION":
                $this->description .= $data;
            //edit the link here
            case "LINK":
                //$this->link .= $data
                $id = $this->newLink($data);
                $this->link .= "display.php?aid="."$id&";

    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_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen(" ","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",



========= Code for display.php =========

echo "<h1>Display news </h1>";

$id = $_GET["aid"];

$baseLink = " =";



Thank you in advance .

John Lam

Re: News feed webpage ?

John wrote:

Quoted text here. Click to load it

   Any reason not to use the existing code:


Re: News feed webpage ?

John wrote:
Quoted text here. Click to load it

The feed is indented, which creates so called text nodes between the

To skip these nodes on a non-Windows environment, you can apply:

xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 1);

When you are working on a Windows box, you can do something like:

case "LINK" && trim($data): {


Re: News feed webpage ?

Janwillem Borleffs wrote:
Quoted text here. Click to load it

In this case, you should assign the value to the $this->link variable,
rather then concatenate it:

case "LINK" && trim($data): {
     $id = $this->newLink($data);
     $this->link = "display.php?aid=$id";


Re: News feed webpage ?

Great help. It works. Thanks everyone !

John Lam

Site Timeline