只读取远程文件中的部分内容(PHP)

时间:2011-08-09 01:29:57

标签: php file fopen

我需要一些关于此代码的帮助。我很确定代码是正确的,但我可能是错的。问题是getSourceCode()没有提取URL的全部内容。它只返回三分之一的数据,例如:$ size变量将返回26301,返回的数据大小仅为8900.我已将php.ini更改为最大文件大小为100M所以我认为不是问题

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

2 个答案:

答案 0 :(得分:6)

好吧,如果你使用的是file_get_contents,你也不应该使用fread。

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

答案 1 :(得分:2)

简短回答是字符串中的字节!= 1个字符。您可以使用$ data = file_get_contents($ url)将整个文件作为字符串。

长答案fread正在查找字节数但是strlen返回字符数,而字符可能大于1个字节,因此您最终无法获取整个文件。或者,您可以使用filesize()来获取文件长度,而不是strlen()。