RSS-Feed dynamisch aus HTML-Seite erstellen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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!
    Last edited by 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

    Comment


    • #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.

      Comment


      • #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

        Comment


        • #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)

          Comment


          • #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?

            Comment


            • #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
              Last edited by 3DMax; 26-02-2007, 13:48.

              Comment


              • #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.

                Comment


                • #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)

                  Comment


                  • #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.

                    Comment

                    Working...
                    X