Katharina Stern: array URLs verarbeiten mit file_get_contents() - klappt nicht :(

Ausgang:

Ich habe in einem Array lauter kleine Urls meiner Seite
und möchte den Inhalt jeder einzelnen URL haben und verarbeiten!

Versuch:

while( list($k, $v) = @each($arr[2]) )
 {
  $fdx = "$arr[2];
  $repcontent = file_get_contents($fdx[$k]);
 }

Error:

leider bekomme ich folgenden Fehler:

Warning: file_get_contents( http://dierichtige.de/richtigeseite.php ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
Warning: file_get_contents( http://dierichtige.de/richtigeseite2.php ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
...

trotz ewigen herumprobieren bekomme ich das Problem nicht gelöst, hat jemand einen Tipp wie ich das ganze lösen kann!

vielen Dank
Katharina Stern

  1. Kommt file_get_contents mit URLs kalr? Normal übergibt man die Dateinamen im Dateisystem.
    $repcontent = file_get_contents('./richtigeseite.php');

    Sky

  2. hi,

    leider bekomme ich folgenden Fehler:

    Abgesehen davon, dass du zunächst mal einen parse_error bekommen müsstest, wenn du den Code wirklich so verwendest, weil du ein Anführungszeichen vergessen hast (nein, eigentlich hast du eins zu viel):

    Warning: file_get_contents( http://dierichtige.de/richtigeseite.php ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
    Warning: file_get_contents( http://dierichtige.de/richtigeseite2.php ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
    ...

    Und welche Debug-Maßnahmen hast du unternommen?

    Bspw. mal zur Kontrolle ausgeben lassen, was eigentlich in dem Parameter, den du der Funktion übergibst, drinsteht?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Warning: file_get_contents( http://dierichtige.de/richtigeseite.php ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
      Warning: file_get_contents( http://dierichtige.de/richtigeseite2.php ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
      ...

      Und welche Debug-Maßnahmen hast du unternommen?

      ich habe die sache schonmal mit var_dump ausgegeben, da steht korrekt drin: http://dierichtige.de/richtigeseite.php - wenn ich das da manuell eingebe dann klappt das auch ... anscheinend ist das Format da falsch, weiss leider trotzdem nicht weiter...

      vielen Dank für Eure Mühe

  3. Hello,

    while( list($k, $v) = @each($arr[2]) )
    {
      $fdx = "$arr[2];
      $repcontent = file_get_contents($fdx[$k]);
    }

    warum so antiquiert?
    list und each sind zwar in manchen Fällen auch heute noch brauchbar, aber in diesem Fall schreibe lieber:

    foreach($arr[2] as $key => $val)   ## dazu muss aber $arr[2] ein Sub-Array sein!
    {
      $repcontent = file_get_contents($val);
      echo "<p>$repcontent</p>;   ### nur zur Kontrolle
    }

    Wenn ich Deinen Knoten richtig aufgelöst habe, dann müsste es so klappen.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. foreach($arr[2] as $key => $val)   ## dazu muss aber $arr[2] ein Sub-Array sein!
      {
        $repcontent = file_get_contents($val);
        echo "<p>$repcontent</p>;   ### nur zur Kontrolle
      }

      Wenn ich Deinen Knoten richtig aufgelöst habe, dann müsste es so klappen.

      leider bekomme ich trotzdem:
      Warning: file_get_contents( http://www.myurl.de/?id=45111AAfWz7Z ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29

      Warning: file_get_contents( http://www.myurl.de/?id=44310AAT3dO6 ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29

      Warning: file_get_contents( http://www.myurl.de/?id=43221AAO7yzT ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29

      Warning: file_get_contents( http://www.myurl.de/?id=42647AAgjTxZ ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29

      :( weiss echt nicht mehr weiter!

      1. hi,

        :( weiss echt nicht mehr weiter!

        weiter

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hello,

        leider bekomme ich trotzdem:

        Warning: file_get_contents( http://www.myurl.de/?id=45111AAfWz7Z ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29

        kann ich mir nicht vorstellen, dass Du wirklich auf "www.myurl.de" zugreifen willst.

        Du solltest hier mal auf eine Domain zugreifen, die Du auf diese Weise auslesen darfst, damit Du uns anschließend die _reale_ Fehlermeldung posten kannst.

        Du kannst dafüru gerne "www.harte-harzer.de" benutzen...

        Vermutlich enthält das Argument von file_get_contents() Zeichen, die es nicht verknusen kann.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hello,

          leider bekomme ich trotzdem:

          Warning: file_get_contents( http://www.myurl.de/?id=45111AAfWz7Z ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29

          kann ich mir nicht vorstellen, dass Du wirklich auf "www.myurl.de" zugreifen willst.

          Du solltest hier mal auf eine Domain zugreifen, die Du auf diese Weise auslesen darfst, damit Du uns anschließend die _reale_ Fehlermeldung posten kannst.

          hi tom,

          ich habe lediglich meine domain gegen myurl.de ausgetauscht, ansonsten ist alles gleich und die seiten sind auch mit inhalt hinterlegt!

          muss irgendwie daran liegen das das anscheinend ein array format ist!?

          1. Hello,

            dann ändere nochmals die Schleife:

            error_reporting(E_ALL);
            ini_set('track_errors',1);

            foreach($arr[2] as $key => $val)   ## dazu muss aber $arr[2] ein Sub-Array sein!
            {
              $repcontent = file_get_contents($val);
              echo "<pre>\n";
              echo "  <h3>&Ouml;ffnen von ". htmlentities($val)."</h3>\n";
              echo "  <p>$php_errormsg</p>\n";
              echo "  <p>$repcontent</p>\n";   ### nur zur Kontrolle
              echo "</pre>\n";

            }

            Und dann zeig mal das wahre Ergebnis...

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

      3. Hallo Katharina,

        leider bekomme ich trotzdem:
        Warning: file_get_contents( http://www.myurl.de/?id=45111AAfWz7Z ) [function.file-get-contents]: failed to open stream: Invalid argument in C:\home\index.php on line 29
        ...
        :( weiss echt nicht mehr weiter!

        Ich möchte mal den Gedanken mit den nicht erlaubten Zeichen aufnehmen.
        Diese kann man auf verschiedene Weise sichtbar machen. Für diesen Fall
        bietet sich urlencode() an:

          
        ...  
        // Ausgabe der "rohen" und der urlencodierten Version untereinander  
        printf('<pre>%s%s%s</pre>', $fdx[$k], "\r\n", urlencode($fdx[$k]));  
        $repcontent = file_get_contents($fdx[$k]);  
        ...  
        
        

        Wenn jetzt (vor allem am Anfang und am Ende) der url-kodierten Variante
        komische Hex-Zahlen mit Prozentzeichen davor auftauchen, wäre das schon
        ein erster Schritt zur Problemlösung. Danach müsstest du nur noch
        herausfinden, wo diese Zeichen (aus Versehen) eingefügt wurden, oder sie
        einfach entsorgen -- bleistiftsweise mit trim().

        MffG
        EisFuX

        1. Ich möchte mal den Gedanken mit den nicht erlaubten Zeichen aufnehmen.
          Diese kann man auf verschiedene Weise sichtbar machen. Für diesen Fall
          bietet sich urlencode() an:

          Wow, vielen Dank, Du bist die Lösung gewesen!
          %0A war jeweils davor und dahinter (hab ich jetzt einfach rausgefiltert!)

          vielen Dank! freue mich riesig

          1. Hello,

            Wow, vielen Dank, Du bist die Lösung gewesen!
            %0A war jeweils davor und dahinter (hab ich jetzt einfach rausgefiltert!)

            Wirklich auch davor? Doch vermutlich wohl eher nur dahinter.
            Wenn Du das Array mit "file()" aus einer Textdatei geladen hast,
            dann stand das Zeilenendezeichen noch hinten dran.

            Aber daran sieht man mal wieder, nur sehen nützt. Aber das muss man dann auch "richtig" machen. :-)

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

  4. Hallo Katharina,

    Ich habe in einem Array lauter kleine Urls meiner Seite
    und möchte den Inhalt jeder einzelnen URL haben und verarbeiten!

    Versuch:

    while( list($k, $v) = @each($arr[2]) )
    {
      $fdx = "$arr[2];
      $repcontent = file_get_contents($fdx[$k]);
    }

    Verzeihe meine dumme Frage, aber ist dein PHP auch so konfiguriert, dass es dir erlaubt ist, mit file_get_contents()
    Dateien von "entfernten URLs" zu holen?

    MffG
    EisFuX

    1. Hello,

      Verzeihe meine dumme Frage, aber ist dein PHP auch so konfiguriert, dass es dir erlaubt ist, mit file_get_contents()
      Dateien von "entfernten URLs" zu holen?

      Das würde eine ander Fehlermeldung geben, wenn es nicht erlaubt wäre.
      Heißt jetzt aber nicht, dass die nicht noch kommt, wenn der erste Fehler behoben ist.

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau