2011-08-09 10 views
0

私はこのコードで助けが必要です。私はかなりコードが正しいと確信していますが、私は間違っている可能性があります。問題は、getSourceCode()がURLの内容全体を取得していないことです。たとえば、$ size変数は26301を返し、返されるデータサイズは8900だけになります。php.iniの最大ファイルサイズを100Mに変更しました。問題。リモートファイルからの部分コンテンツのみが読み込まれています(PHP)

private function getSourceCode($url){  
    $fp = fopen($url, "r"); 
    $size = strlen(file_get_contents($url));; 
    $data = fread($fp, $size); 
    fclose($fp); 
    return $data; 
} 

答えて

5

file_get_contentsを使用している場合は、freadも使用しないでください。

private function getSourceCode($url){  
    return file_get_contents($url); 
} 
2

簡単な答えは、文字列内のバイト!= 1文字です。 $ data = file_get_contents($ url)を使用すると、ファイル全体を文字列として取得できます。

長い答えfreadはバイト数を探していますが、strlenは文字数を返しています。文字は1バイトよりも大きくなる可能性がありますので、ファイル全体を取得できなくなる可能性があります。代わりに、ファイルサイズをstrlen()の代わりにバイト数で取得するためにfilesize()を使用することもできます。

関連する問題