Re: Help with script

From: Date: Sat, 24 Aug 2002 00:35:08 +0000
Subject: Re: Help with script
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-113884@lists.php.net to get a copy of this message
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 (#113884) next »