Re: Help with script

From: Date: Sat, 24 Aug 2002 01:00:46 +0000
Subject: Re: Help with script
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-113887@lists.php.net to get a copy of this message
Then you're doing something wrong. Can you post a piece of code? Bogdan Erich Kolb wrote:
I have already downloaded the entire file so that Im not constantly accessing FreshMeat.net's servers. I will be processing the update files as soon as I can get the big one done. I have also tried to use htmlspecialchars, and nl2br, but it doesnt look like there is any output to process. "Bogdan Stancescu" <mgv@canad.ro> wrote in message news:20020823230239.8210.qmail@pb1.pair.com...
Hi! You can get the content of that file with php, using <? $projects_rdf=file("http://www.freshmeat.net/backend/fm-projects.rdf"); ?> - then you can do whatever you please with it. Make sure to htmlspecialchars() it before outputting to a browser - and consider a nl2br() while you're at it as well. Please be warned that it's a huge download though - you may consider only downloading the updates, available from freshmeat from another location (I'm sure you can find it easily, I don't have the link at hand). HTH Bogdan Erich Kolb wrote:
I am trying to write a script that will take a look at the freshmeat.net database (http://www.freshmeat.net/backend/fm-projects.rdf), parse the
file,
and insert it into a MySQL DB. I have already wrote one for
slashdot.org
that puts the output into html and displays it in a web browser and it
works
fine. I am trying to do the same to start with for freshmeat (I am
learning
as I go) but there is nothing displayed on the browser. Can someone
help me
out with this? Here is the code I have written for slashdot: <?php $insideitem = false; $tag = ""; $title = ""; $description = ""; $link = ""; function startElement($parser, $name, $attrs) { global $insideitem, $tag, $title, $description, $link; if ($insideitem) { $tag = $name; } elseif ($name == "STORY") { $insideitem = true; } } function endElement($parser, $name) { global $insideitem, $tag, $title, $description, $link; if ($name == "STORY") { printf("<dt><b><a href='%s'>%s</a></b></dt>", trim($description),htmlspecialchars(trim($title))); #printf("<dd>%s</dd>",htmlspecialchars(trim($description))); $title = ""; $description = ""; $link = ""; $insideitem = false; } } function characterData($parser, $data) { global $insideitem, $tag, $title, $description, $link; if ($insideitem) { switch ($tag) { case "TITLE": $title .= $data; break; case "URL": $description .= $data; break; } } } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); $fp = fopen("http://www.slashdot.org/slashdot.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); ?> And here is what I have so far for FreshMeat.net. Its pretty much the
same,
but the elements are a little different: <?php $insideitem = false; $tag = ""; $project_id = ""; $date_added = ""; $date_updated = ""; $projectname_short = ""; $projectname_full = ""; $desc_short = ""; $desc_full = ""; $url_homepage = ""; function startElement($parser, $name, $attrs){ global $insideitem, $tag, $project_id, $date_added, $date_updated, $projectname_short, $projectname_full, $desc_short, $desc_full, $url_homepage; if($insideitem){ $tag = $name; } elseif ($name == "project"){ $insideitem = true; } } function characterData($parser, $data){ global $insideitem, $tag, $project_id, $date_added, $date_updated, $projectname_short, $projectname_full, $desc_short, $desc_full, $url_homepage; if($insideitem){ switch ($tag){ case "project_id": $project_id .=$data; break; case "date_added": $date_added .=$data; break; case "date_updated": $date_updated .=$data; break; case "projectname_short": $projectname_short .=$data; break; case "projectname_full": $projectname_full .=$data; break; case "desc_short": $desc_short .=$data; break; case "desc_full": $desc_full .=$data; break; case "url_homepage": $url_homepage .=$data; break; } } } function endElement($parser, $name){ global $insideitem, $tag, $project_id, $date_added, $date_updated, $projectname_short, $projectname_full, $desc_short, $desc_full, $url_homepage; if ($name =="project"){ echo trim($projectname_full)."\n"; echo trim($url_homepage)."\n"; $projectname_full =""; $url_homepage =""; } } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); $fp = fopen("fm-projects.rdf","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); ?>


« previous php.general (#113887) next »