2013-05-25 93 views
0

我试图打开一个文件,但文件输出不正确,因为输出是文件中数据的一半。我不知道解决方案来解决这个问题PHP fopen()工作不正确

<?php 
    $handle = fopen("data/weather.arff", "r"); 
      while ($buffer = fgetc($handle)) { 
       $result .= $buffer; 
      } 
    echo $result; 
    ?> 
+0

'weather.arff'是什么样的? –

+4

为什么不使用[file_get_contents()](http://php.net/manual/en/function.file-get-contents.php)?另外,为什么在开始和结束标记中有空格 –

+1

另外,考虑编写你的循环条件,如:while(false!==($ char = fgetc($ fp))){'以返回非布尔值的可能性评估为假 –

回答

0

我不知道为什么我不能评论(也许缺乏声誉)。你用过“b”二进制模式吗?
像这样:

<?php 
$handle = fopen("http://www.example.com/", "rb"); 
$contents = ''; 
while (!feof($handle)) { 
    $contents .= fread($handle, 8192); 
} 
fclose($handle); 
?> 

来源function.fread

1

while ($buffer = fgetc($handle)) {如果你得到一个NULL字符或数字为零可以评估为假。为了避免这种情况,请使用严格类型比较(如while (($char = fgetc($fp)) !== false) {),以确保您不会将这些其他字符评估为false。