2013-05-13 42 views
0

好的,我錯過了什麼?如果超過50行,我正在嘗試清除文件。PHP:如果超過50行,清除一個文本文件

這是我到目前爲止。

$file = 'idata.txt'; 
$lines = count file($file); 
if ($lines > 50){ 
$fh = fopen('idata.txt', 'w'); 
fclose($fh); 
} 
+6

'count file()'是無效的語法...?! – deceze 2013-05-13 17:22:47

+3

嘗試'計數(文件($文件))' – brbcoding 2013-05-13 17:23:03

+0

同上上'brbcoding's'建議;-) – 2013-05-13 17:24:42

回答

2
$file = 'idata.txt'; 
$lines = count(file($file)); 
if ($lines > 50){ 
$fh = fopen('idata.txt', 'w'); 
fclose($fh); 
} 
+0

太糟糕了,我沒有得到意見分:P – brbcoding 2013-05-13 17:28:32

+1

@brbcoding太糟糕了,我們無法分割/分享積分。稱它爲「合資企業」;-) – 2013-05-13 17:33:35

+0

是的,做到了,我必須嘗試應該抓住這一點。謝謝你! – ToxicMouse 2013-05-13 17:40:50

0

的語法計數是wrong.Replace此行count file($file);通過

count(file($file));

+0

這個確切的答案就在你的下方。提前5分鐘發佈。 – brbcoding 2013-05-13 17:32:28

+0

5分鐘前發佈的答案只包含固定代碼。甚至沒有一個解釋的單詞。想要指出確切的錯誤,那就是爲什麼發佈答案。 – 2013-05-13 17:35:56

0

如果文件真的可以大你更好的循環:

$file="verylargefile.txt"; 
$linecount = 0; 
$handle = fopen($file, "r"); 
while(!feof($handle)){ 
    $line = fgets($handle); 
    $linecount++; 
    if(linecount > 50) 
    { 
     break; 
    } 
} 

應該做這項工作,而不是整個文件在內存中。

0

你在你的語法錯誤,應該是count(file($file));使用這種方法不建議對較大的文件,因爲它加載該文件到內存中。因此,在大文件的情況下它不會有幫助。這是另一種解決此問題的方法:

$file="idata.txt"; 
$linecount = 0; 
$handle = fopen($file, "r"); 
while(!feof($handle)){ 
    if($linecount > 50) { 
     //if the file is more than 50 
     fclosh($handle); //close the previous handle 

     // YOUR CODE 
     $handle = fopen('idata.txt', 'w'); 
     fclose($handle); 
    } 
    $linecount++; 
} 
相關問題