PHP fwrite从文件开头删除设置字符

时间:2014-01-28 12:47:56

标签: php fwrite

我正在尝试读取文件并获取第一行内容并在结尾处写入。然后我想回到文件的开头并删除我刚才写的部分内容。

$pklist = "pklist.txt";
$pkhandle = fopen($pklist, 'a+');
$pkdata = fread($pkhandle, 5);
fwrite($pkhandle, "\n" . $pkdata);
rewind($pkhandle);

到目前为止,这是读取前5个字符,然后在最后附加它们。但是在阅读完PHP文档并环顾四周之后,我仍然不确定如何在回放后从头开始切掉一定数量的字符。

顺便说一句。我的文本文件只是一个包含5位数字的列表,每个数字的末尾都有换行符。

2 个答案:

答案 0 :(得分:0)

如果文件不是太大,您可以使用这些调用:

$file = file($pklist);                // read the file line by line
$file[] = $file[0];                   // append first line to the end
$file[0] = null;                      // delete line 0
                                      // if not working, use unset($file[0]);
$file = array_filter($file);          // remove empty elements
$file = implode("\n", $file);         // array to string, concat by 1 newline
file_put_contents($pklist, $file);    // write contents back to file

文件get被加载到内存中,因此不适合非常大的文件..但对于大小

答案 1 :(得分:0)

<?php
$f = 'pklist.txt';
$fp = fopen($f, 'r+');

$data = fgets($fp);
$contents = fread($fp, filesize($f));
fseek($fp, 0);
fwrite($fp,$contents);
fwrite($fp,$data);
fclose($fp);
?>

那应该有用..

使用r +

打开文件

读取第一行并存储到$ data

阅读剩余部分并存储到$内容(一旦文件结束到达,fread就会停止)

快退到文件开头

写$ contents

写$ data

关闭文件

注意:此外,如果您只需要固定数量的字符而不是整行。只需将fgets更改为类似fgets($ fp,5)的内容,只需移动5个字符。