Anyone have a quick answer, please??

Discussion in 'XML & RSS' started by gemini181, Nov 11, 2006.

  1. #1
    Hi,

    This is the RSS feed code, and...

    <?php
    
    /*
    Created by Global Syndication's RSS Parser
    http://www.globalsyndication.com/rss-parser
    */
    
    set_time_limit(0);
    
    $file = "http://news.google.com/news?sourceid=navclient&ie=UTF-8&rls=GGLG,GGLG:2005-22,GGLG:en&q=Acne&output=rss";
    
    $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 {
    					$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 HTML
    // print ("<div class=\"channelname\">" . $rss_channel["TITLE"] . "</div>"); 
    
    if (isset($rss_channel["ITEMS"])) {
    	if (count($rss_channel["ITEMS"]) > 0) {
    		for($i = 0;$i < count($rss_channel["ITEMS"]);$i++) {
    			if (isset($rss_channel["ITEMS"][$i]["LINK"])) {
    			print ("\n<div class=\"itemtitle\"><a href=\"" . "go.php?url=" . $rss_channel["ITEMS"][$i]["LINK"] . "\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a></div>");
    			} else {
    			print ("\n<div class=\"itemtitle\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</div>");
    			}
    			 print ("<div class=\"itemdescription\">" . $rss_channel["ITEMS"][$i]["DESCRIPTION"] . "</div><br />"); 		}
    	} else {
    		print ("<b>There are no articles in this feed.</b>");
    	}
    }
    
    ?>
    PHP:
    ...I'd like the links (when clicked on) to target _blank (new window) instead of _self. I'm not seeing exactly where to change it.

    Thank you very much. :)
     
    gemini181, Nov 11, 2006 IP
  2. gemini181

    gemini181 Well-Known Member

    Messages:
    2,883
    Likes Received:
    134
    Best Answers:
    0
    Trophy Points:
    155
    #2
    Here's the answer. I knew it was easy, just wanted the exact format, with all the backslashes:

    "...you simply change the following code

    print ("\n<div class=\"itemtitle\"><a href=\"" . "go.php?url=" . $rss_channel["ITEMS"][$i]["LINK"] . "\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a></div>");
    PHP:
    to the following

    print ("\n<div class=\"itemtitle\"><a href=\"" . "go.php?url=" . $rss_channel["ITEMS"][$i]["LINK"] . "\" target=\"_blank\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a></div>");
    PHP:
    It works :)
     
    gemini181, Nov 11, 2006 IP