$file = file("welcome.txt")
foreach($file as &$line) echo $line.'<br />'
这个更方便, file()直接把文本按行转换成数组
fgets如果没指定第二参数,将直接读取到缓存结束为止, 其实它不以换行来循环的,它的第二参数也是限制每次读取的字符个数而已。
$myfile = fopen("web.txt", "r")
echo fgets($myfile)//fgets为读取一行,行本质是段落
fclose($myfile)
修改和删除指定行,我们一般用file将文件内容读取到数组中,根据数字索引比较容易修改,但是你要求用文件指针,这个比较麻烦,不管你用的是filesystem的函数还是spl类函数,都不可避免一个问题,对一个文件流 *** 作,最多替换流中间的某一段内容,不可能实现插入,又不是c语言的链表,
//修改第二行内容$f = fopen('test.txt', 'r+')
$i = 1
while (!feof($f)) {
if ($i == 2) {
fseek($f, 0, SEEK_CUR)
fwrite($f, 'aad')//这里的修改是替换形式,如果修改后这一行的长度比原来短,那么可以用空格填充到原来长度,这样实现修改,而且不影响后面的内容,但是修改后的比原来长就麻烦了,
break
}
fgets($f)
$i++
}
fclose($f)
//删除行同修改行一样,只不过是将原来行替换为同等长度的空格串
$f = fopen('test.txt', 'r+')
$j = 1
while (!feof($f)) {
if ($j == 2){
$row = fgets($f)
$len = strlen($row)
echo ftell($f)-$len."<br>"
fseek($f, ftell($f)-$len)
fwrite($f, str_pad(' ', $len, ' '))
break
}
fgets($f)
$j++
}
fclose($f)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)