mit php xml auslesen <item> prob

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

  • mit php xml auslesen <item> prob

    Ich hab ein script das eine xml bzw rss datei ausliest => titel + link und das dann anzeigt!

    Script:
    Code:
    //
    // Heise Newsticker Add-on
    //
    $content = implode ("", file ("http://www.heise.de/newsticker/heise.rdf"));
    preg_match_all("|<item>(.*)</item>|Uism",$content, $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);
    $template->assign_block_vars('newsticker',array(
    'heise_Ticker' => "&nbsp;•&nbsp;<a href='".$regs[3][0]."' target='_blank' class='mainmenu'><b>".$regs[1][0]."</b></a><br>"));
    }
    Das script funktioniert aber nicht mehr sobald im item tag der xml datei noch was drinnen steht z.b: (Kurier)

    http://kurier.at/newsfeed/oesterreich_rss.xml

    Code:
      <item rdf:about="http://kurier.at/oesterreich/788183.php">
      <title>Schüssel wird Türkei-Koordinator</title> 
      <link>[url]http://kurier.at/oesterreich/788183.php[/url]</link> 
      <description>Österreichs Kanzler wurde von der Europäischen Volkspartei beauftragt, eine "Lösung für ergebnisoffene Verhandlungen mit der Türkei zu finden".</description> 
      <dc:subject>OESTERREICH</dc:subject> 
      <dc:date>2004-11-05T12:18:02+01:00</dc:date> 
      </item>
    bei den anderen gehts ohne probs z.b Heise

    http://www.heise.de/newsticker/heise.rdf

    Code:
      <item>
      <title>SCO vs. Linux: Wozu Anwälte taugen ...</title> 
      <link>[url]http://www.heise.de/newsticker/meldung/52936[/url]</link> 
      </item>
    Lösung: (dachte ich zumindestens)
    ändern dieser Zeile:
    Code:
    preg_match_all("|<item>(.*)</item>|Uism",$content, $items, 
    
    in
    
    preg_match_all("|<item(.*)>(.*)</item>|Uism",$content, $items,
    habs dann nur für Kurier so gepfuscht!

    preg_match_all("|</item>(.*)</item>|Uism",$content, $items, PREG_PATTERN_ORDER);

    also ich such von /item bis /item aber das bringt dann nur 7 Ergebnisse

    aber leider es geht nicht

    Kurier geht wie oben beschrieben nur halb!
    URL: http://forum.edv-stuff.at/rss.php

    pls Help

  • #2
    wieso sich das leben schwer machen und nicht einfach dom/xml nutzen um das xml einzulesen ...
    eine entsprechende funktion zum wandeln des xml in eine array-struktur findest du folgend ...

    PHP-Code:
    function xml_array($node)
        {
        
    $xml_arr = array();
        while (
    $node)
            {
            if (
    $node->has_child_nodes())
                {
                
    $first_child $node->first_child();
                if (
    $first_child->node_type() == XML_ELEMENT_NODE
                    {
                    
    $xml_arr[$node->node_name()][] = xml_array($first_child);
                    }
                else
                    {
                    if (isset(
    $xml_arr[$node->node_name()]))
                        {
                        if (!
    is_array($xml_arr[$node->node_name()]))
                            
    $xml_arr[$node->node_name()] = array($xml_arr[$node->node_name()]);
                            
                        
    $xml_arr[$node->node_name()][] = stripslashes(utf8_decode($first_child->node_value()));
                        }
                    else
                        {
                        
    $xml_arr[$node->node_name()] = stripslashes(utf8_decode($first_child->node_value()));
                        }
                    }
                }
            
    $node $node->next_sibling();
            }
        return 
    $xml_arr;
        } 
    // end xml_array(); 

    Kommentar

    Lädt...
    X