probleme mit script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • probleme mit script

    hallo!
    ich habe folgendes script um eine rss datei auszulesen.
    PHP-Code:
    <?php

    /**
     * rdfparser
     * class to parse newsfeeds into arrays
     * @author clemens krack

     * @access public
     **/
    class rdfparser {
       var 
    $_items// array the items
       
    var $_may// array what may be done
       
    var $_act// string current active
       
    var $_index// integer current index
       
    var $_url// url to open

       /**
        * rdfparser::rdfparser()
        * 
        * @param $url url of  the feed
        * @return void
        **/
       
    function rdfparser($url)
       {
           
    $this->_url $url;
       }

        
    /**
         * rdfparser:<img src="images/smilies/tongue.gif" border="0" alt="">arse()
         * parses a newsfeed an returns an array containing the items.
         * @return array
         **/
        
    function parse() 
        {
            
    $this->_items = array();
            
    $this->_index 0;
            
    $this->_may['parse'] = false;
            
            
    $parser xml_parser_create();
            
            
    xml_set_object($parser$this);
            
    xml_set_element_handler($parser"_startElement""_endElement");
            
    xml_set_character_data_handler($parser"_charHandler");
            
            
    $fp fopen($this->_url"r");
            while(!
    feof($fp)) {
                
    $line fgets($fp4096);
                
    xml_parse($parser$line);
            }
            
    fclose($fp);
            
            
    xml_parser_free($parser);
            
            return 
    $this->_items;
        }

        function 
    _startElement($parser$name$attrs)  
        {
            
    // allow parsing chardata as soon as an element is opened
            
    $this->_may['char'] = true;
            
            if (
    $name=="ITEM") {
                
    // allow parsing as soon as an item element was opened
                
    $this->_may['parse'] = true;
                
    // one more item -> increment index
                
    $this->_index++;
                
    $this->_items[$this->_index] = 
    Array(
    'title' => '''link' => '''description' => '');
            } else if (
    $name=="TITLE") {
                
    // current active: title
                
    $this->_act "TITLE";
            } else if(
    $name=="LINK") {
                
    // current active: link
                
    $this->_act "LINK";
            } else if(
    $name=="DESCRIPTION") {
                
    // current active: description
                
    $this->_act "DESCRIPTION";
            } else {
                
    // unknown tag, don't allow adding chardata
                
    $this->_may['char'] = false;
            }
            
    $this->_act strtolower($this->_act);
        }

        function 
    _endElement($parser$name
        {
            if(
    $name=="ITEM") {
                
    // item tag closed: parsing not allowed
                
    $this->_may['parse'] = false;
            } elseif(
    $name=="TITLE" || $name=="LINK" || $name="DESCRIPTION") {
                
    // datatag closed, we don't want different chardata
                
    $this->_may['char'] = false;
            }
        }

        function 
    _charHandler($parser$data
        {
            
    $data trim($data);
            
            if(!
    $this->_may['char'] OR !$this->_may['parse']) {
                return;
            }
            if (isset(
    $this->_items[$this->_index][$this->_act])) {
                
    $this->_items[$this->_index][$this->_act] .= $data;
            } else {
                
    $this->_items[$this->_index][$this->_act] = $data;
            }
        }
    }
    ?>
    mit
    PHP-Code:
    $rdfparser = new rdfparser('http://www.xxxxxx.de/datei.rss');
    $items $rdfparser->parse();
    echo 
    '<pre>' print_r($itemstrue) . '</pre>'
    gebe ich ich den kompletten array aus.

    wie gebe ich jetzt "nur" <link> oder <description> aus?
    bzw. begrenze die ausgabe auf die ersten 10 einträge?


    danke für die hilfe!

    Zuletzt geändert von websdream; 10.04.2005, 17:14.

  • #2
    scrollbalken weg!
    http://www.php-resource.de/forum/sho...threadid=50454

    zeig doch mal die ausgabe des print_r

    Kommentar


    • #3
      sorry wg. dem falschen posting

      zeig doch mal die ausgabe des print_r
      verstehe ich nicht wirklich?

      Kommentar


      • #4
        a) editiere dein post!
        b) was verstehst du nicht? was gibt die zeile
        Code:
        echo '<pre>' . print_r($items, true) . '</pre>';
        aus?

        Kommentar


        • #5
          a) ok

          b)
          Array
          (
          [1] => Array
          (
          [title] => eine erste überschrift
          [link] => der link zum ganzen
          [description] => und ein beschreibender text
          )
          ......

          Kommentar


          • #6
            wo ist dann das problem?
            http://de3.php.net/manual/de/language.types.array.php erklärt dir, wie man die richtigen elemente anspricht.

            eine begrenzung auf 10 elemente ist z.b. mit einer for-schleife machbar.

            Kommentar


            • #7
              ich verzweifel und blicke nicht mehr durch.
              echo $items[title][''];

              Kommentar


              • #8
                PHP-Code:
                echo $items[1]['link']; 
                weiter - selbst.

                Kommentar


                • #9
                  Hallo!

                  Umlaute und Anführungszeichen werden bei mir ohne Leerzeichen ausgegeben. Hat jemand eine Idee?


                  XML-Datei:

                  PHP-Code:
                  <title>Autos in &amp;Ouml;sterreich</title
                  Ausgabe über rdfparser:

                  Autos inÖsterreich


                  ###



                  XML-Datei:

                  PHP-Code:
                  <description>&lt;B&gt;Neues &apos;&apos;Biogas-GNG&apos;&apossoll
                  20 bis 25 Prozent des 
                  &amp;ouml;sterreichischen Treibstoffverbrauches abdecken</description
                  Ausgabe über rdfparser:

                  Neues''Biogas-GNG''soll 20 bis 25 Prozent desösterreichischen Treibstoffverbrauches abdecken
                  Zuletzt geändert von loper; 08.11.2006, 12:57.
                  MfG,
                  loper

                  Kommentar


                  • #10
                    Hast du die entsprechenden Entities denn in deiner DTD definiert?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      danke
                      MfG,
                      loper

                      Kommentar


                      • #12
                        DTD XML-Datei:

                        PHP-Code:
                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"


                        DTD HTML (PHP)

                        PHP-Code:
                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                         "http://www.w3.org/TR/html4/strict.dtd"


                        gleiche Problematik.
                        Zuletzt geändert von loper; 08.11.2006, 12:58.
                        MfG,
                        loper

                        Kommentar


                        • #13
                          kann denn hier keiner mal den quelltext umbrechen?
                          @ loper: bitte brich ihn um dann kann man sich das auch angucken.
                          Webdesign und Webentwicklung - Plunix.de

                          Kommentar

                          Lädt...
                          X