2009-07-07 5 views
3

Ich möchte einer Funktion eine Zeichenfolge übergeben, die diese Zeichenfolge an URLs angehängt. Geht dann zu dieser URL und gibt dann die Seite an meinen Server zurück, damit ich sie mit JS manipulieren kann.Seite von externem Server holen

Alle Ideen würden sehr geschätzt werden.

Prost.

+1

Bitte klären. Es ist verwirrend für Ihre 10k Leser. – Pacerier

Antwort

0

Sie sollten fopen() für was Sie wollen verwenden können. Es kann URLs akzeptieren.

echo "<script type='text/javascript' src='myjavascript.js'></script>"; 
$handle = @fopen("http://www.example.com/", "r"); 
if ($handle) { 
    while (!feof($handle)) { 
     $buffer = fgets($handle, 4096); 
     echo $buffer; 
    } 
    fclose($handle); 
} 
9

Wenn Ihr fopen_wrappers aktiviert sind, können Sie file_get_contents() verwenden, um die Seite zu holen, und dann JavaScript in den Inhalt einzufügen, bevor sie als Ausgabe Echo.

$content = file_get_contents('http://example.com/page.html'); 
if($content !== FALSE) { 
    // add your JS into $content 
    echo $content; 
} 

Dies hat natürlich keinen Einfluss auf die Originalseite.

0

Die Verwendung von CURL wäre wahrscheinlich am einfachsten, aber ich mache es lieber selbst. Dies wird eine Verbindung zu einer bestimmten Adresse herstellen und den Inhalt der Seite zurückgeben. Es wird aber auch die Header zurückgeben, also pass auf das auf:

function do_request ($host, $path, $data, $request, $specialHeaders=null, $type="application/x-www-form-urlencoded", $protocol="", $port="80") 
{ 
     $contentlen = strlen($data); 
     $req = "$request $path HTTP/1.1\r\nHost: $host\r\nContent-Type: $type\r\nContent-Length: $contentlen\r\n"; 
     if (is_array($specialHeaders)) 
     { 
      foreach($specialHeaders as $header) 
      { 
       $req.=$header; 
      } 
     } 
     $req.="Connection: close\r\n\r\n"; 
     if ($data != null) { 
      $req.=$data; 
     } 
     $fp = fsockopen($protocol.$host, $port, $errno, $errstr); 
     if (!$fp) { 
      throw new Exception($errstr); 
     } 
     fputs($fp, $req); 
     $buf = ""; 
     if (!feof($fp)) { 
      $buf = @fgets($fp); 
     } 
     return $buf; 
} 
+0

Ja, file_get_contents() ist wahrscheinlich auch einfacher, aber das funktioniert, wenn fopen_wrappers nicht aktiviert ist. – Cameron