ได้ โค้ดดึง rss มาแสดงบน php ครับ แต่อยากให้แสดงเพียงแค่ 5 หรือ 3 (ขอให้ช่วย)

เริ่มโดย etgsgroup, 14 พฤษภาคม 2008, 21:57:29

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

etgsgroup

ขอให้ท่านเซียนทั้งหลายช่วยแก้ให้หน่อยนะครับ (ไปดึง rss จาก bbc เป็นต้นแต่ในสคริปนี้เขาดึงมาแสดงทั้งหมด อยากให้แสดงเพียงแค่ 5 หรือ 3 หัวข้อข่าวเท่านั้นจะต้อง ใส่ค่าอะไรเพิ่ม ตรงไหน บ้างครับ (ขอบคุณครับ ที่มาช่วย)





<?php
class RSSParser {

    var 
$title "";
    var 
$link  "";
    var 
$description  "";
    var 
$inside_item  false;
    var 
$all_rss_urls = array(
"http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/front_page/rss091.xml" => "BBC Front Page",
"http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/technology/rss091.xml" => "BBC - Technology",
"http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/uk/rss091.xml" => "BBC - UK News",
);

function startElement$parser$name$attrs='' ){
global $current_tag;

$current_tag $name;

if( $current_tag == "ITEM" )
$this->inside_item true;

// endfunc startElement

function endElement$parser$tagName$attrs='' ){
global $current_tag;

    
if ( $tagName == "ITEM" ) {

printf"\t<br><b><a href='%s' target='_blank'>%s</a></b>\n"trim$this->link ), htmlspecialcharstrim$this->title ) ) );
    
printf"\t<br>%s<br>\n"htmlspecialcharstrim$this->description ) ) );

    
$this->title "";
    
$this->description "";
    
$this->link "";
    
$this->inside_item false;

    
}

// endfunc endElement

function characterData$parser$data ){
global $current_tag;

if( $this->inside_item ){
switch($current_tag){

case "TITLE":
$this->title .= $data;
break;
case "DESCRIPTION":
$this->description .= $data;
break;
case "LINK":
$this->link .= $data;
break;

default:
break;

// endswitch

// end if

// endfunc characterData

function parse_results$xml_parser$rss_parser$file ) {

xml_set_object$xml_parser, &$rss_parser );
xml_set_element_handler$xml_parser"startElement""endElement" );
xml_set_character_data_handler$xml_parser"characterData" );

$fp fopen("$file","r") or die( "Error reading XML file, $file);

while ($data fread($fp4096)) {

// parse the data
xml_parse$xml_parser$datafeof($fp) ) or die( sprintf"XML error: %s at line %d"xml_error_stringxml_get_error_code($xml_parser) ), xml_get_current_line_number$xml_parser ) ) );

// endwhile

fclose($fp);

xml_parser_free$xml_parser );

// endfunc parse_results

function show_title$rss_url ){
?>

<tr height="20%">
<td valign="top">
<small>

<br>
Latest news (<? echo $this->all_rss_urls[ $rss_url ]; ?>):
</small>
</td>
</tr>
<tr height="70%">
<td valign="top">
<small><small>
<?
} // endfunc show_title

function show_list_box( $rss_url ){

?>
            <br>
                <form method="post">
                <select name='rss_url' size='1'>
<?

while (list ($key, $val) = each ( $this->all_rss_urls )) {
    echo "\t\t<option value=\"$key\"";

    if( $rss_url == $key )
    echo " selected";

    echo ">$val</option>\n";
}
?>
</select>
<input type="Submit" Value="Submit">
</form>
<?
} // end func show_list_box

} // endclass RSSParser

global $rss_url;

// Set a default feed
if( $rss_url == "" )
$rss_url = "http://www.bbc.co.uk/syndication/feeds/news/ukfs_news/front_page/rss091.xml";

$xml_parser = xml_parser_create();
$rss_parser = new RSSParser();

$rss_parser->show_title( $rss_url );
$rss_parser->parse_results( $xml_parser, &$rss_parser, $rss_url );
$rss_parser->show_list_box( $rss_url );

?>

ขอบคุณ ThaiSeoBoard สำหรับความรู้ทั้งทางด้าน SEO, SEM, Affiliate ตั้งแต่สมัยที่คนไทยไม่มีความรู้เกี่ยวกับ Digital Marketing เลย ต้องอ่านจาก ต่างประเทศอย่างเดียว

nuijang24

เอาแบบง่ายๆ นะครับ ก็ไปดู function ชื่อ parse_results นะครับ
จากนั้นดูตรง บรรทัดที่เขียนว่า
// ของเดิม ==============
while ($data = fread($fp, 4096)) {

// parse the data
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 ) ) );

} // endwhile


// แก้เป็น ===============

$count=0;
                     $maxRss =5;
while ($data = fread($fp, 4096)) {
if ($count<=$maxRss){ // $maxRss คือจำนวนตัวเลขที่ต้องการโชร์
// parse the data
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 ) ) );
}
$count++;
} // endwhile


etgsgroup

ขอบคุึณมาก ๆ ครับ ได้แล้ว
ขอบคุณ ThaiSeoBoard สำหรับความรู้ทั้งทางด้าน SEO, SEM, Affiliate ตั้งแต่สมัยที่คนไทยไม่มีความรู้เกี่ยวกับ Digital Marketing เลย ต้องอ่านจาก ต่างประเทศอย่างเดียว