RSS-Feed dynamisch aus HTML-Seite erstellen

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

  • RSS-Feed dynamisch aus HTML-Seite erstellen

    Hallo,

    ich wuerde gerne mit einem PHP Script dynamisch aus einer sich taeglich aendernden HTML-Seite ein RSS-Feed erstellen.
    Code:
    <item rdf:about="[b]Inhalt des href-Attributs des A-Tags[/b]">
    <title>[b]Inhalt des A-Tags mit maximal 100 Zeichen Laenge (Abkuerzung durch...)[/b]</title>
    <link>[b]Inhalt des href-Attributs des A-Tags[/b]</link>
    <descripton>[b]Voller Inhalt des A-Tags ohne Begrenzung der Zeichenlaenge[/b]</description>
    </item>
    Leider bin ich trotz mittlerweile mehrjaehriger Arbeit mit PHP nicht ueber das "Copy & Paste"- sowie "Try and Error"-Stadium hinaus gekommen.

    Nachdem ich etwas gegoogelt habe weiss ich nun, dass ich wahrscheinlich einen Array brauchen werde sowie ein foreach Konstrukt.

    Kann mir bitte einer von euch einen kleinen Codeschnipsel geben?

    Vielen Dank!
    Zuletzt geändert von hyperterminal; 26.02.2007, 09:07.

  • #2
    Schau dir Reguläre Ausdrücke an.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Danke das geht schon mal in die richtige Richtung.

      Leider weiss ich nicht, welche Suchmuster ich verwenden muss und werde aus der entsprechenden Seite von php.net nicht schlau.

      Folgendes funktioniert:
      PHP-Code:
      preg_match('#<span>(.+)</span>#U'"<span>Example</span>"$ausgabe);

      echo 
      $ausgabe[0]; // ausgegebener Wert: Example 
      Beim zweiten Versuch gibt es dann aber schon wieder ein Problem:
      PHP-Code:
      preg_match('#\">(.+)</a>#U'"<a href=\"http://www.example.org\">Example</a>"$ausgabe);

      echo 
      $ausgabe[0]; // ausgegebener Wert: ">Example</a> 
      Weiterhin suche ich noch ein Suchmuster, mit dem ich an den Inhalt des href-Attributs komme.

      Kommentar


      • #4
        Lass dir mal die Ausgaben mit print_r geben ...

        Desweiteren empfehle ich dir, jedes nur erdenkliche Tutorial, jede Anleitung, jeden Text zum Thema RegExp zu gemüte zu führen. Wenn du ein paar Mark auf Tasche hast, hol dir das gleichnamige Buch von Friedl. Referenzwerk.
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          PHP-Code:
          $reg '/<a.*href=\"([^\"]*)\"/Uis'
          Hilft dir das weiter zum Thema href ? Bin mir ned ganz sicher ob " wirklich escaped werden muss

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Danke jahlives, das funktioniert.

            Nun will ich die ausgelesenen Daten geordnet ausgeben.
            PHP-Code:
            foreach ($title[1] as $i) {
                 echo 
            "<title>" $i "</title>\n";
                }
                
            foreach (
            $link[1] as $i) {
                 echo 
            "<link>" $i "</link>\n";
                } 
            Es sollen nicht wie bei dem PHP Code in diesem Beitrag erst alle Titel und dann alle Links ausgegeben werden, sondern immer ein Titel und ein Link und dann wieder ein Titel und ein Link usw. und so fort. Wie kann ich das bewerkstelligen?

            Kommentar


            • #7
              warum hast du mehrere arrays? nunja, müsstest du dann alle mit einer "normalen" for-schleife durchlaufen und direkt auf den array-index zugreifen.

              ich würd's aber wie folgt machen machen - ein bißchen anpassen bekommst du hoffentlich alleine hin.

              PHP-Code:
              $text='html html <a href="http://www.example.org">Example</a>
              html <a href="http://www.example2.org">Example2</a> html html
              <a href="http://www.example3.org">Example3</a>'
              ;

              if(
              $size=preg_match_all('|<a href="(.+)">(.+)</a>|isU'$text$matches))
               for(
              $i=0$i<$size$i++)
                echo 
              'URL: '.$matches[1][$i].' Linktext: '.$matches[2][$i].'<br />'
              edit: url hinzugefügt
              Zuletzt geändert von 3DMax; 26.02.2007, 13:48.

              Kommentar


              • #8
                Danke 3DMax!

                Ich habe das jetzt etwas modifiziert bei mir eingebaut. Komischerweise werden die Absaetze nicht beruecksichtig (\n ist bei der Ausgabe ausgeschrieben sichtbar).

                PHP-Code:
                if($size=preg_match_all('|<a href="(.+)">(.+)</a>|isU'$cnt$matches))
                 for(
                $i=0$i<$size$i++)
                  echo 
                '<title>'.$matches[2][$i].'</title>\n<link>'.$matches[1][$i].'</link>\n'
                Ausserdem wuerde ich gerne die Leerzeichen in den URLs umwandeln, so dass es keine Probleme mit den Browsern gibt (http://www.example.org/ test/ -> http://www.example.org/%20test/). Leider bekomme ich das weder mit rawurlencode noch mit urlencode hin.

                Kommentar


                • #9
                  PHP-Code:
                  "\n" !== '\n'
                  und nur eine der beiden Versionen funzt. Welche wohl ???

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Was fuer ein peinlicher Fehler

                    Ich muss sagen, dass ich mich mit den Quotes in Bezug auf PHP ueberhaupt nicht auskenne. Da ich es aus HTML gewohnt bin Double Quotes zu nehmen mache ich das auch meist in PHP. Aber wenn ich von anderen ohne nachzudenken etwas einfach uebernehme dann passiert sowas.

                    Naja, werd erst mal Schluss machen fuer heute. Danke nochmal.

                    Kommentar

                    Lädt...
                    X