Posted this a while ago, never got so much as a peep. Please take a look
and give any thoughts.
I've set up a news links section using the RSS parsing tutorial found
here: http://www.sitepoint.com/article/560
Everything works great but depending on the feed source there may be 3
news links or 30. How can I limit the amount of titles, descriptions,
and links output to be no more than 10?
Thanks,
Steve.
[MY SLIGHTLY MODIFIED CODE PASTED BELOW]
<dl>
<?php
$insideitem = false;
$tag = "";
$title = "";
$description = "";
$link = "";
$feedurl="http://rss.news.yahoo. com/rss/business";
function startElement($p arser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link;
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
}
function endElement($par ser, $name) {
global $insideitem, $tag, $title, $description, $link;
if ($name == "ITEM") {
$description=st r_replace("'"," ",$description) ; //take out '
characters that were causing probs with tooltip javascript
printf("<dt><a href='%s' target='mtgnews ' onmouseover=\"r eturn
overlib('%s')\" onmouseout=\"re turn nd();\">%s</a></dt>",
trim($link),htm lspecialchars(t rim($descriptio n)),htmlspecial chars(trim($tit le)));
$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 "DESCRIPTIO N":
$description .= $data;
break;
case "LINK":
$link .= $data;
break;
}
}
}
$xml_parser = xml_parser_crea te();
xml_set_element _handler($xml_p arser, "startEleme nt", "endElement ");
xml_set_charact er_data_handler ($xml_parser, "characterData" );
$fp = fopen($feedurl, "r")
or die("Business News Unavailable.");
while ($data = fread($fp, 4096))
xml_parse($xml_ parser, $data, feof($fp))
or die(sprintf("XM L error: %s at line %d",
xml_error_strin g(xml_get_error _code($xml_pars er)),
xml_get_current _line_number($x ml_parser)));
fclose($fp);
xml_parser_free ($xml_parser);
?>
</dl>
and give any thoughts.
I've set up a news links section using the RSS parsing tutorial found
here: http://www.sitepoint.com/article/560
Everything works great but depending on the feed source there may be 3
news links or 30. How can I limit the amount of titles, descriptions,
and links output to be no more than 10?
Thanks,
Steve.
[MY SLIGHTLY MODIFIED CODE PASTED BELOW]
<dl>
<?php
$insideitem = false;
$tag = "";
$title = "";
$description = "";
$link = "";
$feedurl="http://rss.news.yahoo. com/rss/business";
function startElement($p arser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link;
if ($insideitem) {
$tag = $name;
} elseif ($name == "ITEM") {
$insideitem = true;
}
}
function endElement($par ser, $name) {
global $insideitem, $tag, $title, $description, $link;
if ($name == "ITEM") {
$description=st r_replace("'"," ",$description) ; //take out '
characters that were causing probs with tooltip javascript
printf("<dt><a href='%s' target='mtgnews ' onmouseover=\"r eturn
overlib('%s')\" onmouseout=\"re turn nd();\">%s</a></dt>",
trim($link),htm lspecialchars(t rim($descriptio n)),htmlspecial chars(trim($tit le)));
$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 "DESCRIPTIO N":
$description .= $data;
break;
case "LINK":
$link .= $data;
break;
}
}
}
$xml_parser = xml_parser_crea te();
xml_set_element _handler($xml_p arser, "startEleme nt", "endElement ");
xml_set_charact er_data_handler ($xml_parser, "characterData" );
$fp = fopen($feedurl, "r")
or die("Business News Unavailable.");
while ($data = fread($fp, 4096))
xml_parse($xml_ parser, $data, feof($fp))
or die(sprintf("XM L error: %s at line %d",
xml_error_strin g(xml_get_error _code($xml_pars er)),
xml_get_current _line_number($x ml_parser)));
fclose($fp);
xml_parser_free ($xml_parser);
?>
</dl>
Comment