File : rss.php. ID : 9124
Skin : Default | Sons-of-obsidian | Sunburst | Highlighter | Frame
<?php 
/*  
ปรับปรุง : 2549-06-22
- ทดสอบกับ RSS.XML ที่มาจากเว็บไซต์ต่าง ๆ
=======================================    
PHP RSS Reader v1.1 
By Richard James Kendall  
Bugs to richard@richardjameskendall.com  
Code From : http://www.rjk-hosting.co.uk/programs/prog.php?id=7
*/ 
set_time_limit(0); 

$file = "";
$file = "";
$file = "";
$file = "";
$file = "http://slashdot.org/index.rss"; 
$file = "http://www.microsite.reuters.co.uk/rss/uk/topNews";
$file = "http://www.neowin.net/backend.php?page=main";
$file = "http://gotoknow.org/blog/thaiall/rss20.xml?tag=article";
$file = "http://www.manager.co.th/RSS/Entertainment/Entertainment.xml";


$rss_channel = array(); 
$currently_writing = ""; 
$main = ""; 
$item_counter = 0; 

function startElement($parser, $name, $attrs) { 
       global $rss_channel, $currently_writing, $main; 
       switch($name) { 
           case "RSS": 
           case "RDF:RDF": 
           case "ITEMS": 
               $currently_writing = ""; 
               break; 
           case "CHANNEL": 
               $main = "CHANNEL"; 
               break; 
           case "IMAGE": 
               $main = "IMAGE"; 
               $rss_channel["IMAGE"] = array(); 
               break; 
           case "ITEM": 
               $main = "ITEMS"; 
               break; 
           default: 
               $currently_writing = $name; 
               break; 
       } 
} 

function endElement($parser, $name) { 
       global $rss_channel, $currently_writing, $item_counter; 
       $currently_writing = ""; 
       if ($name == "ITEM") { 
           $item_counter++; 
       } 
} 

function characterData($parser, $data) { 
    global $rss_channel, $currently_writing, $main, $item_counter; 
    if ($currently_writing != "") { 
        switch($main) { 
            case "CHANNEL": 
                if (isset($rss_channel[$currently_writing])) { 
                    $rss_channel[$currently_writing] .= $data; 
                } else { 
                    $rss_channel[$currently_writing] = $data; 
                } 
                break; 
            case "IMAGE": 
                if (isset($rss_channel[$main][$currently_writing])) { 
                    $rss_channel[$main][$currently_writing] .= $data; 
                } else { 
                    $rss_channel[$main][$currently_writing] = $data; 
                } 
                break; 
            case "ITEMS": 
                if (isset($rss_channel[$main][$item_counter][$currently_writing])) { 
                    $rss_channel[$main][$item_counter][$currently_writing] .= $data; 
                } else { 
                    //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>"); 
                    $rss_channel[$main][$item_counter][$currently_writing] = $data; 
                } 
                break; 
        } 
    } 
} 

$xml_parser = xml_parser_create(); 
xml_set_element_handler($xml_parser, "startElement", "endElement"); 
xml_set_character_data_handler($xml_parser, "characterData"); 
if (!($fp = fopen($file, "r"))) { 
    die("could not open XML input"); 
} 

while ($data = fread($fp, 4096)) { 
    if (!xml_parse($xml_parser, $data, feof($fp))) { 
        die(sprintf("XML error: %s at line %d", 
                    xml_error_string(xml_get_error_code($xml_parser)), 
                    xml_get_current_line_number($xml_parser))); 
    } 
} 
xml_parser_free($xml_parser); 

// output as HTML 
/* 
by burin
print ("<html><head><title>PHP RSS Reader</title></head><body>"); 
if (isset($rss_channel["IMAGE"])) { 
    print ("<a href=\"" . $rss_channel["LINK"] . "\" target=\"_blank\"><img border=\"0\" src=\"" . $rss_channel["IMAGE"]["URL"] . "\" align=\"middle\" alt=\"" . $rss_channel["IMAGE"]["TITLE"] . "\"></a>&nbsp;&nbsp;<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>"); 
} else { 
    print ("<font size=\"5\">" . $rss_channel["TITLE"] . "</font><br><br>"); 
} 
print ("<i>" . $rss_channel["DESCRIPTION"] . "</i><br><br>"); 
*/
if (isset($rss_channel["ITEMS"])) { 
    if (count($rss_channel["ITEMS"]) > 0) { 
        for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) { 
//            print ("\n<table width=\"100%\" border=\"1\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\"><h2>" . $rss_channel["ITEMS"][$i]["TITLE"] . "</h2></a></b>"); 
//            print ("<i>" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . "</i>"); 
//            print ("</td></tr></table><br>"); 
            print ("\n<table width=\"100%\" border=\"0\"><tr><td width=\"100%\"><a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a>"); 
            print ("" . html_entity_decode($rss_channel["ITEMS"][$i]["DESCRIPTION"]) . ""); 
            print ("</td></tr></table>"); 
		} 
    } else { 
        print ("<b>There are no articles in this feed.</b>"); 
    } 
} 
print ("</body></html>"); 
?>