0
function curl_get($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data = curl_exec($ch);

        print_r(curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD));

        curl_close($ch);
        return $data;
}

このページ「wikipedia.sfstate.us/Scarves」に対して文字列を一致させようとしていました。関数を使用してコンテンツを取得します。

$url = "http://wikipedia.sfstate.us/Scarves";
$html = curl_get($url);
var_dump($html);

結果は次のようになります。

812 //CURLINFO_SIZE_DOWNLOAD
string(812) "..." //$html string where the content is stored

ただし、ファイル全体では 64612 バイトです (web-sniffer.net による結果)。64612 = 1024 * 63 + 812 です。つまり、ファイルの最後の 812 バイトしか取得していません。

なぜこれが起こるのでしょうか?コンテンツ全体を取得する方法についてのアイデアはありますか? ありがとう。

PS: sth も試しました。以下のようですが、役に立ちません

if(strlen($html) < 1024){
    $html = '';
    $i = 0;
    while($content = file_get_contents($url, FILE_TEXT,  NULL, $i, $i + 1023)){
            $html .= $content;
            $i += 1023;
    }
}
4

2 に答える 2

0

これを試してくださいこれは私のテスト済みのコードで、正常に動作しています

出力:-ここに画像の説明を入力

<?php

function curl_get($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, true); 
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1");
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data = curl_exec($ch);

        print_r(curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD));

        curl_close($ch);
        return $data;
}


$url = "http://wikipedia.sfstate.us/Scarves";
$html = curl_get($url);
var_dump($html); 

また、別の例を試してください

$ch = curl_init("http://wikipedia.sfstate.us/Scarves");
$fp = fopen("example_htmlpage.html", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
于 2012-08-16T17:50:57.170 に答える