Re: Help with script
| From: | Erich Kolb | 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);
> >
> >
> > ?>
> >
> >
> >
>