<?php
$myFile="php01.txt";
$fh=fopen($myFile, 'r');
$theData02=fread($fh, filesize($myFile));
$theData03=fread($fh, 20);
fclose($fh);
echo $theData02;
echo $theData03;
?>
这是我正在试验的代码。 我试过两次使用fread,发现只有第一个正在工作。 我不能两次使用fread?如果我想打印整个字符串及其中的一部分,我该怎么办?
答案 0 :(得分:4)
第一个读取整个数据并将指针放在文件末尾。所以,第二个没有什么可读的......
尝试
$theData02 = fread($fh, filesize($myFile));
fseek($fh, 0);
$theData03 = fread($fh, 20);
答案 1 :(得分:2)
fread()
将读取。您将使用以下行到达文件的末尾:
$theData02=fread($fh, filesize($myFile));
然后你想再读一遍:
$theData03=fread($fh, 20);
但是什么?你已经读完了。
如果要从文件的开头(或文件中间的某个位置)再次读取,则需要使用fseek()
修改文件指针:
fseek($fh, 0, SEEK_SET); // beginning of the file
fseek($fh, $offset, SEEK_SET); // somewhere in the middle of the file.
// Note: SEEK_SET is the default value, I've just passed it for
// educational purposes.
答案 2 :(得分:0)
只要满足以下条件之一,读取就会停止:
...
到达EOF(文件结尾)
$theData02=fread($fh, filesize($myFile));
您已经读取了所有文件(带有文件大小),因此读取停止。
以下代码将执行您想要的操作:
<?php
$myFile="php01.txt";
$fh=fopen($myFile, 'r');
$theData02=fread($fh, filesize($myFile));
$theData03=substr($theData02, 0, 20); // <= modification here, it reads 20 letters from the start of $theData02
fclose($fh);
echo $theData02;
echo $theData03;
?>