host stimmt nicht nach file_get_contents

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

  • host stimmt nicht nach file_get_contents

    Hallo,

    ich hoffe jemand kann mir weiter helfen. Hab schon eine weile gesucht aber nichts gefunden was zum Ziel führt...

    Wenn ich z.B. file_get_contents auf goggle mache, wird aus denn Links, bei denen "http://google.de" fehlt, "http://mein-server.de"

    PHP Code:
    $url "http://google.de/index.html";
    $content file_get_contents($url);
    echo 
    $content
    Wie mache ich es das die original Links angezeigt werden? Bzw. die Seite komplett geladen wird?? z.B. siehe google-Logo

    MfG

  • #2
    Na, die Links entsprechend anpassen. Dafür braucht man nicht suchen, sondern nur logisch denken.

    Jetzt wo du weißt, was zu tun ist, kannst du nochmal drüber nachdenken und ggf. nach einer Lösung suchen...

    Comment


    • #3
      Hmm naja logisch erscheint mir das ja auch... ich müsste nur (wie zb. bei google unter "Mehr...") vor "/intl/de/options/" ein "http://google.de" stellen.

      Aber wie mach ich das am besten?

      Eine Idee die mir da einfällt wäre die $content durch str_replace schicken und immer die links oder so ersetzen. Is aber nicht das was du im Kopf hast oder?

      Comment


      • #4
        ein string replace kommt dem schon ziemlich nah. Nur frage ich mich, was du ersetzen willst.

        preg_replace wäre vielleicht sinniger, oder???

        Comment


        • #5
          Ok ich hab eine Lösung ist aber leider nicht mit preg_replace.... Aber scheint zu funktionieren. Kann ich das so lassen oder sollte ich es doch anders machen?

          PHP Code:
          $url "http://google.de/index.html";
          $content file_get_contents($url);

          $content str_replace('href="/''href="http://'.$host.'/'$content);
          $content str_replace("href='/""href='http://".$host."/"$content);
          $content str_replace('href=/''href=http://'.$host.'/'$content);

          $content str_replace('src="/''src="http://'.$host.'/'$content);
          $content str_replace("src='/""src='http://".$host."/"$content);
          $content str_replace('src=/''src=http://'.$host.'/'$content);

          echo 
          $content

          Comment


          • #6
            Wenn du den Code nicht zu redundant, unsauber, unskalierbar findest, lass es ruhig so...

            Solltest natürlich noch berücksichtigen, dass mam auch HREF oder Href oder auch hreF schreiben könnte. Ab und zu lassen Leute die Anführungszeichen weg, usw... Aber das sind Ja nur wenige zusätzliche Zeilen...

            Außerdem sind nicht alle Links der Form a href="/dir/file.php" ab und zu kommt dir auch so was in die quere: file.php wenn du dann noch in nem Unterverzeichnis bist... Alles so kleinigkeiten...
            Last edited by TobiaZ; 10-11-2007, 14:42.

            Comment


            • #7
              ok habe verstanden ist fürn arsch *g*

              aber wie ich das mit preg_replace machen soll is mir nicht ganz klar

              Comment


              • #8
                Na, alle Regeln, die du da oben definiert hast packst du "einfach" in eine Regex und gut ist.

                evtl reicht es auch aus, der neuen Seite ein base href zu geben...

                Comment


                • #9
                  Ah.. also so hier eventuell?

                  PHP Code:
                  $url "http://google.de/index.html";
                  $content file_get_contents($url);

                  $parse_url = @parse_url($url);
                  $host $parse_url['host'];

                  $patterns[0] = '|href="/|U';
                  $patterns[1] = "|href='/|U";
                  $patterns[2] = '|href=/|U';
                  $patterns[3] = '|src="/|U';
                  $patterns[4] = "|src='/|U";
                  $patterns[5] = '|src=/|U';

                  $replacements[0] = 'href="http://'.$host.'/';
                  $replacements[1] = "href='http://".$host."/";
                  $replacements[2] = 'href=http://'.$host.'/';
                  $replacements[3] = 'src="http://'.$host.'/';
                  $replacements[4] = "src='http://".$host."/";
                  $replacements[5] = 'src=http://'.$host.'/';

                  $content preg_replace($patterns$replacements$content);
                  echo 
                  $content

                  Comment


                  • #10
                    mal ehrlich, das bringt dich doch kein stück weiter als stri_replace...

                    Hier ist jetzt erstmal Regex-Grundlagen Arbeit angesagt...

                    Comment


                    • #11
                      PHP Code:
                      $content str_replace('<head>''<head><base href="http://google.de/" />'$content); 

                      Comment


                      • #12
                        Was ich sag.

                        Comment


                        • #13
                          Sorry, hatte ich übersehen.

                          Comment


                          • #14
                            ach du kacke... und ich hatte es am anfang immer so versucht und es ging nicht... man man ich dank euch!!

                            PHP Code:
                            $url "http://google.de/index.html";
                            $content 'head><base href="http://google.de/" /></haed>';
                            $content .= file_get_contents($url);
                            echo 
                            $content

                            Comment


                            • #15
                              OffTopic:
                              Bist wahrscheinlich nicht der einzige.

                              Comment

                              Working...
                              X