$myfile = fopen("web.txt", "r")
echo fgets($myfile)//fgets为读取一行,行本质是段落
fclose($myfile)
<?php$c = getLine('./a.txt', 10)// 读取a.txt文件第10行内容
echo $c
/**
* 获取指定行内容
*
* @param $file 文件路径
* @param $line 行数
* @param $length 指定行返回内容长度
*/
function getLine($file, $line, $length = 4096){
$returnTxt = null// 初始化返回
$i = 1// 行数
$handle = @fopen($file, "r")
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, $length)
if($line == $i) $returnTxt = $buffer
$i++
}
fclose($handle)
}
return $returnTxt
}
修改和删除指定行,我们一般用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条)