可以打開文件再關(guān)閉,例如:
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)秀峰免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
$fclose($fopen('abc.txt','w'));
還可以直接寫入空字符串,例如:
file_put_contents('abc.txt','');
讀取一條刪一條可以做到,有這么幾種方法
1、讀取一行往臨時(shí)文件里寫一行,到達(dá)你需要的那一條記錄時(shí),把這條記錄存入變量,然后讀取原文件剩下的內(nèi)容,寫入臨時(shí)文件,然后把臨時(shí)文件改名成原文件。
2、移動(dòng)文件指針到你要的那條記錄,讀取一條記錄,然后讀取這條記錄后面的內(nèi)容,把指針移動(dòng)到你要的那條記錄的開始,把之前讀出的記錄后面的內(nèi)容寫入,然后把文件截?cái)喑稍募笮p去所讀取記錄的長度。
3、移動(dòng)文件指針到你要的那條記錄,讀取,然后把這條記錄填充成空白,然后,要記著下次再讀取時(shí)跳過空白內(nèi)容。
4、移動(dòng)文件指針到你要的記錄,讀取,然后在另一個(gè)文件內(nèi)保存記錄的位置或序號(hào),下次再讀取該文件時(shí)要先讀取保存記錄位置或序號(hào)的文件內(nèi)容,然后根據(jù)其中內(nèi)容跳過原文件中相應(yīng)的記錄,這也相當(dāng)于刪除了相應(yīng)記錄。
是的,沒有函數(shù)直接刪除文件中的行,修改文件(刪除、增加)標(biāo)準(zhǔn)的辦法都是新建立文件,逐行進(jìn)行拷貝,在拷貝中遇到需要修改的就進(jìn)行修改,那么滿足你的功能的標(biāo)準(zhǔn)代碼是:
刪除第二行:
$f1=fopen('fff.txt','r');
$tmp=tempnam();//建立臨時(shí)文件
$f2=fopen($tmp,'w');
$line_no=1;//行號(hào)
while(!feof($f1)){
$line=fgets($f1);
if ($line_no!=2) fputs($f2,$line);
$line_no++;
}
fclose($f1);
fclose($f2);
rename($tmp,'fff.txt');
刪除內(nèi)容為“user2”的行:
$f1=fopen('fff.txt','r');
$tmp=tempnam();//建立臨時(shí)文件
$f2=fopen($tmp,'w');
while(!feof($f1)){
$line=fgets($f1);
if ($line!='user2') fputs($f2,$line);
}
fclose($f1);
fclose($f2);
rename($tmp,'fff.txt');
補(bǔ)充:這點(diǎn)舉一反三都做不到呀,如果是我的學(xué)生我不會(huì)來做這個(gè)補(bǔ)充的~
$f1=fopen('fff.txt','r');
$tmp=tempnam();//建立臨時(shí)文件
$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');
我有一個(gè)這樣的代碼,是我自己以前博客的代碼。自己寫的,不懂可以問我。
//刪除文件,原理是選擇性復(fù)制
function?Delete_text($files,$isline){
$f1?=?Read_it($files);
$temp?=?tempnam("/","TEMP");
$f2?=?fopen($temp,'w+');
//if($ff1?!=?$isline){
foreach($f1?as?$f11){
$f111?=?$f11."\n";
$file_in?=?explode('|locksepace|',$f11);
if($file_in[0]?!=?$isline){
fputs($f2,$f111);
}
}
//}
fclose($f1);
fclose($f2);
rename($temp,$files);?
}
上邊是這個(gè)函數(shù),用起來很簡單
例如
?
Delete_text(“online.text”,$isline)?//$isline其實(shí)為了操作方便,設(shè)置的編號(hào)
?
online.txt的格式需要注意,因?yàn)樽x取時(shí)是由數(shù)組的方式讀取,并用|locksepace|分割的,所以格式如下
1|locksepace|用戶1|locksepace|2014年4月5日 16:18:28
2|locksepace|用戶2|locksepace|2014年4月4日 16:18:37
下線直接調(diào)用函數(shù)刪除即可!
親,你好,沒有必要把第一行刪除了再讀取第二行啊!
你可以直接寫一個(gè)循環(huán),然后直接逐行讀取txt內(nèi)容就可以了??!
PHP有讀取文本行的函數(shù)fgets($handle);
希望可以幫到你哦!~如果有疑問可以私信我或者繼續(xù)追問哦!~~