PHP: clear a text file if it exceeds 50 lines
好的,我错过了什么? 我试图清除文件超过50行。
这就是我到目前为止所拥有的。
1 2 3 4 5 6
| $file = 'idata.txt';
$lines = count file($file);
if ($lines > 50){
$fh = fopen( 'idata.txt', 'w' );
fclose($fh);
} |
-
count file()语法无效......?!
-
试试count(file($file))
-
同上brbcoding's建议;-)
-
@brbcoding,你应该发布答案。
-
像这样的@Starx语法错误应该被删除IMO ...这不是一个对SO有贡献的问题。
-
@brbcoding,语义正确,但我认为降级这样的问题会减少很多参与Stackoverflow。
1 2 3 4 5 6
| $file = 'idata.txt';
$lines = count(file($file));
if ($lines > 50){
$fh = fopen( 'idata.txt', 'w' );
fclose($fh);
} |
-
太糟糕了,我没有得到评论点:P
-
@brbcoding太糟糕了,我们无法拆分/分享积分。 称之为"合资企业";-)
-
是的,这样做,我必须尝试应该抓住它。 谢谢!
-
@ToxicMouse这种方式将文件加载到内存中。 解决问题非常危险的方法。 非常大的文件需要很长时间才能给出count(file($file))
-
@ToxicMouse欢迎你。
您的语法有错误,应为count(file($file));不建议对较大的文件使用此方法,因为它会将文件加载到内存中。 因此,对于大文件,它将没有用处。 这是另一种解决方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $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++;
} |
如果文件真的很大,你最好循环:
1 2 3 4 5 6 7 8 9 10 11
| $file="verylargefile.txt";
$linecount = 0;
$handle = fopen($file,"r");
while(!feof($handle)){
$line = fgets($handle);
$linecount++;
if(linecount > 50)
{
break;
}
} |
应该做的工作,而不是内存中的整个文件。
count的语法是错误的。将此行放在count file($file);处
count(file($file));
-
这个确切的答案就在你的下方。 早5分钟发布。
-
5分钟前发布的答案只包括固定代码。 甚至没有单词的解释。 想要精确定位错误,这就是发布答案的原因。