Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] rssfeed 2 php

h4xX0r
2 antwoorden
  • ik heb een mooi script (gevonden) die rssfeed kan omzetten naar php. Nu ist de bedoeling dat ik daar een limiet opzet, dat bijvoorbeeld alleen de 3 nieuwste entries getoond worden. Ik heb al het een en ander geprobeerd, maar krijg dat neit voor mekaar. Zouden jullie mij kunnen helpen…¿[code:1:9a8aee0b54]<html>
    <head>
    </head>
    <body>
    <dl>
    <?php
    $insideitem = false;
    $tag = "";
    $title = "";
    $description = "";
    $link = "";
    $pubdate = "";

    function startElement($parser, $name, $attrs) {
    global $insideitem, $tag, $title, $description, $link, $pubdate;
    if ($insideitem) {
    $tag = $name;
    } elseif ($name == "ITEM") {
    $insideitem = true;
    }
    }

    function endElement($parser, $name) {
    global $insideitem, $tag, $title, $description, $link, $pubdate;
    if ($name == "ITEM") {
    printf("<dt><b><a style='COLOR: rgb(0,153,255);' href='%s'><font size='-1' face='Arial'><b>%s</b></font></a></dt>
    ",
    trim($link),htmlspecialchars(trim($title)));
    // printf("<dd><font size='-1' face='Arial'>%s</font></dd>
    ",trim($description));
    printf("<dd><font size='-2' color='gray' face='Arial'><i>%s</i></font></dd>

    ",date("d-m-Y",strtotime($pubdate)));
    $title = "";
    $description = "";
    $link = "";
    $pubdate = "";
    $insideitem = false;
    }
    }

    function characterData($parser, $data) {
    global $insideitem, $tag, $title, $description, $link, $pubdate;
    if ($insideitem) {
    switch ($tag) {
    case "TITLE":
    $title .= $data;

    break;
    case "DESCRIPTION":
    $description .= $data;

    break;
    case "LINK":
    $link .= $data;

    break;
    case "PUBDATE":
    $pubdate .= $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.nos.nl/nos
    ss/nieuws.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);

    ?>
    </dl>
    </body>
    </html>[/code:1:9a8aee0b54]De feed is om privacy redenen aangepast, dus dat is alleen voort idee…..
  • misschen werkt dit (ik neem wel een heel andere benadering:

    eerst open je het document met de functie
    simplexml_load_file(bestandsnaam) deze functie moet je toekennen aan eev variable (je weet wel met $open = simplexml_load_file(bestandsnaam);)
    dan kun je met bv $open->de naam van de tag waar jij de waarde van wilt hebben. de waarde opvragen. dit moet je ook weer aan een variable toekennen als er meer tag met dezelfde naam in je document staan maakt php van die variable automatisch een array. die array kun je dan doorlopen met for en dan wordt het script iets als dit:
    [code:1:cb8b85ec03]
    <?php
    $file = simplexml_load_file("bestand.xml");
    $text = file->text;
    for($doorloop = 0; doorloop < 3; doorloop++;){
    print ("$text[doorloop] <br>")
    }
    ?>


    [/code:1:cb8b85ec03]
    Ik hoop dat dit werkt.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.