• User Attivo

    script per feed rss - come modificarlo?

    ciao!

    sto utilizzando lo script php di webmasterpoint per inserire feed rss esterni nel mio sito...

    FUNZIONA ALLA GRANDE..... non risco pero' a capire come posso decidere quante news mostrare. come posso fare?

    posto lo script:

    
    <?php
    
    $insideitem = false;
    $tag = "";
    $title = "";
    $description = "";
    $link = "";
    
    function startElement&#40;$parser, $name, $attrs&#41; &#123;
    global $insideitem, $tag, $title, $description, $link;
    if &#40;$insideitem&#41; &#123;
    $tag = $name;
    &#125; elseif &#40;strtolower&#40;$name&#41; == "item"&#41; &#123;
    $insideitem = true;
    &#125;
    &#125;
    
    function endElement&#40;$parser, $name&#41; &#123;
    global $insideitem, $tag, $title, $description, $link;
    if &#40;strtolower&#40;$name&#41; == "item"&#41; &#123;
    printf&#40;"* **[url='%s']%s**",
    trim&#40;$link&#41;,trim&#40;$title&#41;,trim&#40;$title&#41;&#41;;
    printf&#40;"",trim&#40;$description&#41;&#41;;
    $title = "";
    $description = "";
    $link = "";
    $insideitem = false;
    &#125;
    &#125;
    
    function characterData&#40;$parser, $data&#41; &#123;
    global $insideitem, $tag, $title, $description, $link;
    if &#40;$insideitem&#41; &#123;
    switch &#40;strtolower&#40;$tag&#41;&#41; &#123;
    case "title":
    $title .= $data;
    break;
    case "description"&#58;
    $description .= $data;
    break;
    case "link"&#58;
    $link .= $data;
    break;
    &#125;
    &#125;
    &#125;
    
    $xml_parser = xml_parser_create&#40;&#41;;
    xml_set_element_handler&#40;$xml_parser, "startElement", "endElement"&#41;;
    xml_set_character_data_handler&#40;$xml_parser, "characterData"&#41;;
    // Carico indirizzo feed rss delle news di WebMasterPoint.org
    $fp = fopen&#40;"http&#58;//www.gazzetta.it/rss/Calcio.xml","r"&#41;
    // ALTRI FEED UTILI
    // Ultimi articoli di WebMasterPoint.org&#58; http&#58;//www.webmasterpoint.org/rss/articoli.xml
    // Ultimi post del forum&#58; http&#58;//forum.webmasterpoint.net/external.php?type=RSS
    // Ultimi post del forum ASP&#58; http&#58;//forum.webmasterpoint.net/external.php?type=RSS&forumids=24
    // Ultimi post del forum PHP&#58; http&#58;//forum.webmasterpoint.net/external.php?type=RSS&forumids=28
    // Ultimi post del forum Flash&#58; http&#58;//forum.webmasterpoint.net/external.php?type=RSS&forumids=13
    // Ultimi post del forum Snitz Forum&#58; http&#58;//forum.webmasterpoint.net/external.php?type=RSS&forumids=25
    // Ultimi post del forum Off Topics&#58; http&#58;//forum.webmasterpoint.net/external.php?type=RSS&forumids=19
    
    or die&#40;"Error reading RSS data."&#41;;
    while &#40;$data = fread&#40;$fp, 4096&#41;&#41;
    xml_parse&#40;$xml_parser, $data, feof&#40;$fp&#41;&#41;
    or die&#40;sprintf&#40;"XML error&#58; %s at line %d", 
    xml_error_string&#40;xml_get_error_code&#40;$xml_parser&#41;&#41;,   
    xml_get_current_line_number&#40;$xml_parser&#41;&#41;&#41;;
    fclose&#40;$fp&#41;;
    xml_parser_free&#40;$xml_parser&#41;;
    
    ?>
    
    

    qualcuno riesce ad aiutarmi? :bho:


  • Super User

    così com'è non hai il controllo su quante news ma leggi (e mostri) tutto quello che arriva dal file calcio.xml

    dovresti riuscire a mettere la struttura dei dati in un array, controllarne il numero e stampare solo quelle che vuoi


  • User Attivo

    volendo potresti modificare la funzione endElement.
    Dovresti incrementare una varibile (globale) tutte le volte che, in quella funzione, vai a scrivere un Item. Quando la varibile supera un max allora non scrivi più.
    Una cosa così (non l'ho provato quindi magari non è pefetto..):

    
    $cont=0;
    $maxItem=10;
    function endElement&#40;$parser, $name&#41; &#123;
    global $insideitem, $tag, $title, $description, $link,$cont,$maxItem;
    if &#40;&#40;strtolower&#40;$name&#41; == "item"&#41; && &#40;$cont<$maxItem&#41;&#41; &#123;
    $cont++;
    printf&#40;"* **[url='%s']%s**",
    trim&#40;$link&#41;,trim&#40;$title&#41;,trim&#40;$title&#41;&#41;;
    printf&#40;"",trim&#40;$description&#41;&#41;;
    $title = "";
    $description = "";
    $link = "";
    $insideitem = false;
    &#125;
    &#125; 
    
    

    cioa