大橙子网站建设,新征程启航

为企业提供网站建设、域名注册、服务器等服务

php删除文件某行数据 php删除一条记录

php逐行读取文件,逐行修改文件,删除指定行

修改和删除指定行,我们一般用file将文件内容读取到数组中,根据数字索引比较容易修改,但是你要求用文件指针,这个比较麻烦,不管你用的是filesystem的函数还是spl类函数,都不可避免一个问题,对一个文件流操作,最多替换流中间的某一段内容,不可能实现插入,又不是c语言的链表,

创新互联是一家成都网站制作、成都做网站、外贸营销网站建设,提供网页设计,网站设计,网站制作,建网站,按需定制设计,网站开发公司,2013年开创至今是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。

//修改第二行内容

$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);

php 如何删除文件的特定内容

php中删除文件有一个系统函数:

unlink ( string $filename );

参数$filename 表示文件的路径,可以是相对路径也可以是绝对路径。

列如,当前目录下有个文件:test.html

可以执行 unlink ( 'test.html' );来删除

另外删除目录用函数:rmdir();用法与unlink ()相同

PHP 如何从TXT文件中删除指定的一行?

是的,没有函数直接删除文件中的行,修改文件(删除、增加)标准的办法都是新建立文件,逐行进行拷贝,在拷贝中遇到需要修改的就进行修改,那么满足你的功能的标准代码是:

删除第二行:

$f1=fopen('fff.txt','r');

$tmp=tempnam();//建立临时文件

$f2=fopen($tmp,'w');

$line_no=1;//行号

while(!feof($f1)){

$line=fgets($f1);

if ($line_no!=2) fputs($f2,$line);

$line_no++;

}

fclose($f1);

fclose($f2);

rename($tmp,'fff.txt');

删除内容为“user2”的行:

$f1=fopen('fff.txt','r');

$tmp=tempnam();//建立临时文件

$f2=fopen($tmp,'w');

while(!feof($f1)){

$line=fgets($f1);

if ($line!='user2') fputs($f2,$line);

}

fclose($f1);

fclose($f2);

rename($tmp,'fff.txt');

补充:这点举一反三都做不到呀,如果是我的学生我不会来做这个补充的~

$f1=fopen('fff.txt','r');

$tmp=tempnam();//建立临时文件

$f2=fopen($tmp,'w');

while(!feof($f1)){

$line=fgets($f1);

list($u,$p)=explode(':',$line);

if ($u!='user2') fputs($f2,$line);

}

fclose($f1);

fclose($f2);

rename($tmp,'fff.txt');


当前文章:php删除文件某行数据 php删除一条记录
标题来源:http://dzwzjz.com/article/ddgegdi.html
在线咨询
服务热线
服务热线:028-86922220
TOP