xml parsen mit php (sorry)

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

  • xml parsen mit php (sorry)

    guten morgen liebe profis

    ich bin auf dieser materie ein ganz grosser newbie und such auf diesem wege hilfe. ich möchte gerne ein rss-file mittels php script auslesen. zu diesem zweck, habe ich mir ein "parser-script" kopiert und kleinere anpassungen gemacht. leider funktioniert das auslesen überhaupt nicht. der code wäre:


    <?php
    $url="http://www.all-porsche.info/blog/wp-rss2.php";
    // Enter the url to an RSS feed

    $data=@fread(fopen("$url","r"),10000) or die("Cant open $url!");
    // Get the file contents

    $myar=getXmlData($data);
    // What ever it may be, the argument to this
    // function should be the XML document's content


    // Now $myar holds the fully parsed XML contents.
    // It may have a number of tags, like <TITLE> , <LINK> , <AUTHOR> , <SOMETHING> ... and so on
    // With a simple loop, you can extract all the tags and their values neatly

    // Remember, $i<= should be lesser than or equal to the number of values
    // a tag has. If you give count($myar), it will only take the number of tags.
    // See structure.txt for better understanding.


    for($i=0;$i<=count($myar[TITLE]);$i++) {

    // Here, we want to read the TITLE, DESCRIPTION, and LINK of the RSS feed.
    // You can read the values of any tag like this.
    // $myar[TITLE][$i], $myar[SOMETHING][$i], $myar[SOMETAG][$i].... and so on..
    // Here it goes

    $title=$myar[TITLE][$i];
    $text=$myar[DESCRIPTION][$i];
    $link=$myar[LINK][$i];

    if($title) {
    echo <<<EOF
    <a href="$link"><font size="2" face="Verdana" color="blue">$title</font></a><br>
    <font size="2" face="Verdana">$text</font><br><br>
    <hr width="50%" size="1" align="left">
    EOF;
    }

    }



    //#####################################################################

    // This is the function. It returns the array of the parsed XML data

    function getXmlData($xml_doc) {

    $n=0; // Counter used for arraying the XML data
    $ar=array(); // The main array for storing parsed xml using xml_parse_into_struct()

    // Parse the XML document
    $parser = xml_parser_create();
    xml_parse_into_struct($parser,$xml_doc,$vals,$index) or die(xml_error_string(xml_get_error_code($parser)));
    xml_parser_free($parser);


    $ttags=array(); // Temporary arry for storing tag names


    // The main part. This is MY CREATION
    // and this piece of code makes this script simple
    // This is the "MAGIC LOOP" !!

    for($n=0;$n<=count($vals)-1;$n++) {
    if(trim($vals[$n][value])) {
    $ar[$vals[$n][tag]][count($ar[$vals[$n][tag]])]=$vals[$n][value];
    $ttags[$vals[$n][tag]]=$vals[$n][tag];
    }
    }


    // Array for storing all the tag names
    // This array will hold all the Tag names found in the XML document
    // eg: ("TITLE","LINK","AUTHOR","DOMAIN")..
    // Use this if you need it.

    $tags=array();

    // Extract and save the tag names to the array
    foreach($ttags as $tagi) { array_push($tags,$tagi); }

    return $ar;

    }

    ?>


    ich habe den code in die "inhalt.php" gepackt und jedes mal wenn ich diese "manuell" aufrufe (mittels browser) kommt diese fehlermeldung:

    Cant open http://www.all-porsche.info/blog/wp-rss2.php!

    kann mir jemand von euch sagen, wo denn der fehler liegt? habe ich was vergessen?

    ich weiss, diese frage ist sicherlich schon ein paar mal gekommen, habe auch das forum durchsucht (soweit meine bescheidenen kenntnisse ausreichen). habe jedoch keine antwort gefunden.

    besten dank für euer entgegenkommen.

  • #2
    Re: xml parsen mit php (sorry)

    http://www.php-resource.de/forum/sho...threadid=50454
    du berücksichtigst bitte insb. folgende punkte:
    - [php]-tags
    - dabei keine meterlangen scrollbalken
    - raus mit den verdammten @'s vor funktionsaufrufen!
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      hallo

      besten dank für deine antwort. was meinst du mit [php]-tags? ich habe jetzt das @ rausgenommen. nun bekomme ich folgenden fehler:

      Warning: fopen(): URL file-access is disabled in the server configuration in /home/pcarmart.com/htdocs/inhalt.php on line 40

      Warning: fopen(http://www.all-porsche.info/blog/wp-rss2.php): failed to open stream: no suitable wrapper could be found in /home/pcarmart.com/htdocs/inhalt.php on line 40

      Warning: fread(): supplied argument is not a valid stream resource in /home/pcarmart.com/htdocs/inhalt.php on line 40
      Cant open http://www.all-porsche.info/blog/wp-rss2.php!

      wie gesagt, ich bin absoluter newbie und ich will eure nerven nicht mit dummen fragen strapazieren, im gegenteil, will einfach das script zum laufen bringen.

      danke für eine erneute hilfe

      Kommentar


      • #4
        Warning: fopen(): URL file-access is disabled in the server configuration in /home/pcarmart.com/htdocs/inhalt.php on line 40
        Du hast von deiner Serverconfig her nicht die Möglichkeit die URL zu "öffnen"

        Somit kann er die folgenden Befehle auch nicht ausführen da du keine geöffnete Datei hast.

        Kommentar


        • #5
          hallo schnoop

          besten dank für die info. und was muss ich jetzt machen? muss ich meinem hoster was mitteilen? muss er die server-config abändern?

          danke

          Kommentar


          • #6
            Ich denke nicht das dein Hoster das änder wird weil es ein Sicherheitsaspekt ist.

            Aber versuchen kannst du es ja mal.

            Kommentar


            • #7
              @Schnoop

              anders gefragt, wie kann ich denn diesen xml feed anderweitigs auslesen, ohne den hoster damit zu belangen? da gibt es doch sicherlich eine andere möglichkeite? wenn ja welche?

              besten dank

              Kommentar


              • #8
                such dir nen hoster, der das unterstützt.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  ggf. noch per fsockopen() verbindung zur gegenstelle aufbauen, ressource per GET anfordern und einlesen (*).

                  je nach dem, was dein hoster unter "sicherheit" versteht, kann aber auch diese möglichkeit deaktiviert sein.


                  [color=#aaaaaa](*) diese stichworte sind, wie eigentlich immer, eine aufforderung zum selber danach suchen/sich infomieren, nicht zum prompten rückfragen "und wie mach ich das?"[/color]
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X