kostenloser Webspace werbefrei: lima-city


Problem mit PHP Script zum Anzeigen von RSS Nachrichten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hi !

    Ich habe ein Problem.

    Wenn ich in eine PHP tag/datei">Datei das hier kopiere:

    <?php
    $inhalt="http://www.rmv.de/coremedia/rss/Frankfurt.xml";
    $website="http://www.rmv.de";

    if (@fopen("$inhalt", "r") != "")
    {

    $quelle = @file($inhalt);
    $data = implode ("", $quelle);

    preg_match_all("|<item>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<item .*>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
    preg_match_all("|<pubDate>(.*)</pubDate>|Uism",$items[1][$i], $regs2, PREG_PATTERN_ORDER);

    $title = $regs[1][0];
    $pubdate = $regs2[1][0];
    echo '<br><font color="white"><span style="font-family:Arial;font-size:11px"><b>'.$pubdate.'&nbsp;&nbsp;<a href="'.$regs[3][0].'" target="_blank" style="text-decoration: none">'.$title.'</a></b></span></font>';
    }
    }
    ?>

    wird nichts angezeigt.

    Aber mit diesem hier:

    <?php
    $inhalt="http://www.telespiegel.de/rss-xml/telespiegel-tarife.xml";
    $website="http://www.telespiegel.de";

    if (@fopen("$inhalt", "r") != "")
    {

    $quelle = @file($inhalt);
    $data = implode ("", $quelle);

    preg_match_all("|<item>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<item .*>(.*)</item>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
    preg_match_all("|<pubDate>(.*)</pubDate>|Uism",$items[1][$i], $regs2, PREG_PATTERN_ORDER);

    $title = $regs[1][0];
    $pubdate = $regs2[1][0];
    echo '<br><font color="white"><span style="font-family:Arial;font-size:12px"><b>'.$pubdate.'&nbsp;&nbsp;<a href="'.$regs[3][0].'" target="_blank" style="text-decoration: none">'.$title.'</a></b></span></font>';
    }
    }
    ?>

    wird alles angezeigt.

    Kann mir einer sagen, woran es liegen könnte.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Der erste Feed ist ein ATOM-Feed, der ein bisschen anders aufgebaut ist, als sonstige RSS-Feeds. Vermutlich kann das Script damit einfach nichts anfangen und findet das <item>-Element nicht (da das im ATOM-Format nicht so heißt).
    http://de.wikipedia.org/wiki/ATOM
    Der zweite Feed ist ein "normaler" RSS-Feed (der allerdings nicht ganz valide ist) und deswegen kann dein Script ihn auch anzeigen.
    http://de.wikipedia.org/wiki/RSS
    Beides sind erlaube und gängige Feed-Formate, aber um ATOM anzeigen zu können, musst du den Script ein bisschen ändern.
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.


    Der erste Feed ist ein ATOM-Feed, der ein bisschen anders aufgebaut ist, als sonstige RSS-Feeds. Vermutlich kann das Script damit einfach nichts anfangen und findet das <item>-Element nicht (da das im ATOM-Format nicht so heißt).
    http://de.wikipedia.org/wiki/ATOM
    Der zweite Feed ist ein "normaler" RSS-Feed (der allerdings nicht ganz valide ist) und deswegen kann dein Script ihn auch anzeigen.
    http://de.wikipedia.org/wiki/RSS
    Beides sind erlaube und gängige Feed-Formate, aber um ATOM anzeigen zu können, musst du den Script ein bisschen ändern.


    Wie muss ich es ändern?
  5. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    Du musst statt nach <item> nach <entry> suchen:
    preg_match_all("|<entry>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<entry .*>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }


    Wenn du PHP5 hast, kannst du das ganze allerdings mit SimpleXML erledigen.
    Bei Fragen zu SimpleXML einfach fragen :) .

    Marius
  6. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.


    Du musst statt nach <item> nach <entry> suchen:
    preg_match_all("|<entry>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<entry .*>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }


    Wenn du PHP5 hast, kannst du das ganze allerdings mit SimpleXML erledigen.
    Bei Fragen zu SimpleXML einfach fragen :) .

    Marius


    Ich habe das Script jetzt so eingetragen:

    <?php
    $inhalt="http://www.rmv.de/coremedia/rss/Gesamt_RMV.xml";
    $website="http://www.rmv.de";

    if (@fopen("$inhalt", "r") != "")
    {

    $quelle = @file($inhalt);
    $data = implode ("", $quelle);

    preg_match_all("|<entry>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<entry .*>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER); preg_match_all("|<pubDate>(.*)</pubDate>|Uism",$items[1][$i], $regs2, PREG_PATTERN_ORDER);

    $title = $regs[1][0];
    $pubdate = $regs2[1][0];
    echo '<br><font color="white"><span style="font-family:Arial;font-size:11px"><b>'.$pubdate.'&nbsp;&nbsp;<a href="'.$regs[3][0].'" target="_blank" style="text-decoration: none">'.$title.'</a></b></span></font>';
    }
    }
    ?>

    Aber ich bekomme nichts angezeigt.
  7. Hallo davy,

    beim ATOM Feed sind auch noch andere elemente anders.

    item -> entry
    <link>(.*)</link> -> <link href="(.*)" />
    pubDate -> updated

    So funktioniert es bei mir:

    <?php
    $inhalt="http://www.rmv.de/coremedia/rss/Frankfurt.xml";
    $website="http://www.rmv.de";
    
    if (@fopen("$inhalt", "r") != "")
    {
    
    $quelle = @file($inhalt);
    $data = implode ("", $quelle);
    
    preg_match_all("|<entry>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<entry .*>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link href=\"(.*)\" />|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
    preg_match_all("|<updated>(.*)</updated>|Uism",$items[1][$i], $regs2, PREG_PATTERN_ORDER);
    
    $title = $regs[1][0];
    $pubdate = $regs2[1][0];
    echo '<br><font color="white"><span style="font-family:Arial;font-size:12px"><b>'.$pubdate.'&nbsp;&nbsp;<a href="'.$regs[3][0].'" target="_blank" style="text-decoration: none">'.$title.'</a></b></span></font>';
    }
    }
    ?>
  8. familie-schiffer

    Kostenloser Webspace von familie-schiffer, auf Homepage erstellen warten

    familie-schiffer hat kostenlosen Webspace.

    Hallo!

    So muss es sein
    <?php
    $inhalt="http://www.rmv.de/coremedia/rss/Gesamt_RMV.xml";
    $website="http://www.rmv.de";
    
    if (@fopen("$inhalt", "r") != "")
    {
    
    $quelle = @file($inhalt);
    $data = implode ("", $quelle);
    preg_match_all("|<entry.*>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link href=\"(.*)\".*>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER); preg_match_all("|<updated>(.*)</updated>|Uism",$items[1][$i], $regs2, PREG_PATTERN_ORDER);
    
    $title = $regs[1][0];
    $pubdate = $regs2[1][0];
    echo '<br><font color="white"><span style="font-family:Arial;font-size:11px"><b>'.$pubdate.'&nbsp;&nbsp;<a href="'.$regs[3][0].'" target="_blank" style="text-decoration: none">'.$title.'</a></b></span></font>';
    }
    }
    ?>


    1. Ich habe direkt <entry.*> gemacht, da auch zutreffend, wenn sonst nix dasteht.
    2. <pubData> ist in Atom updated
    3. Das Tag <link> hat in Atom ein href Attribut, dort steht der Link drin.


    Marius

    Edit: Und so bei mir :)
  9. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.


    Hallo davy,

    beim ATOM Feed sind auch noch andere elemente anders.

    item -> entry
    <link>(.*)</link> -> <link href="(.*)" />
    pubDate -> updated

    So funktioniert es bei mir:

    <?php
    $inhalt="http://www.rmv.de/coremedia/rss/Frankfurt.xml";
    $website="http://www.rmv.de";
    
    if (@fopen("$inhalt", "r") != "")
    {
    
    $quelle = @file($inhalt);
    $data = implode ("", $quelle);
    
    preg_match_all("|<entry>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    if (count($items[1])==0) {
    preg_match_all("|<entry .*>(.*)</entry>|Uism",$data, $items, PREG_PATTERN_ORDER);
    }
    for ($i=0; $i<count($items[1]); $i++) {
    preg_match_all("|<title>(.*)</title>(.*)<link href=\"(.*)\" />|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
    preg_match_all("|<updated>(.*)</updated>|Uism",$items[1][$i], $regs2, PREG_PATTERN_ORDER);
    
    $title = $regs[1][0];
    $pubdate = $regs2[1][0];
    echo '<br><font color="white"><span style="font-family:Arial;font-size:12px"><b>'.$pubdate.'&nbsp;&nbsp;<a href="'.$regs[3][0].'" target="_blank" style="text-decoration: none">'.$title.'</a></b></span></font>';
    }
    }
    ?>



    Danke, es geht !

    Beitrag geändert: 21.12.2008 13:32:08 von davy
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!