3

I want to pass a function a string, which takes that string tacks it onto url. Then goes to that url and then returns the page to my server so I can manipulate it with JS.

Any Ideas would be much appreciated.

cheers.

4

3 回答 3

9

If your fopen_wrappers are enabled, you can use file_get_contents() to retrieve the page, and then insert JavaScript into the content before echoing it as output.

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

This of course won't affect the original page.

于 2009-07-07T19:27:47.120 回答
0

You should be able to use fopen() for what you want. It can accept URLs.

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);
}
于 2009-07-07T19:27:37.463 回答
0

Using CURL would probably be easiest but I prefer to do stuff myself. This will connect to a given address and return the contents of the page. It will also return the headers, though, so watch out for that:

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;
}
于 2009-07-07T19:31:31.497 回答