如何删除txt文件中的【最后一行】??

zagj11 2012-07-03 09:02:01
fwrite($flietxt,$txt);
fclose($flietxt);

最后一行总是空的.有时候随机选择的时候选择到最后一行总是空的容易出现错误.有什么办法可以删除掉最后一行...
...全文
759 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2012-07-04
  • 打赏
  • 举报
回复
你问题的标题是:如何删除txt文件中的【最后一行】
也就只给了
fwrite($flietxt,$txt);
fclose($flietxt);
两行代码
我回答你 fwrite($flietxt, trim($txt) );
有什么不妥吗?对于多行文本,只要删去最后的换行符就可以了

对于 #2 的派生问题,要具体情况具体分析
那是分行逐次写文件
如果需要最后的一行不写换行符,判断起来比较复杂
但如果倒过来,问题就简单了
$lr = '';
while($r=$empire->fetch($sql)){
fwrite($flietxt, $lr . trim($txt) );
$lr = PHP_EOL;
}
我们把换行符放在行首,这要文件的最后一行后边就没有换行符了
问题变成:如何不写第一行前面的换行符
观察代码中的 $lr 应该就不难理解了
码无边 2012-07-04
  • 打赏
  • 举报
回复
楼主打印$txt看看。
  • 打赏
  • 举报
回复
#3的最后一种方法直接:
fwrite($flietxt,substr($txt, 0, -1));
kyzy_yy_pm 2012-07-03
  • 打赏
  • 举报
回复
首先你需要判断资源里有多少条记录,然后判断是否是最后一次循环,是的话就将\n去掉
kyzy_yy_pm 2012-07-03
  • 打赏
  • 举报
回复
如果是最后一行就将\n去掉就行了
  • 打赏
  • 举报
回复

#最简单的办法将“\n”放在前面,但会导致第一行总为空
while($r=$empire->fetch($sql)){
$titleurl=sys_ReturnBqTitleLink($r);
$txt="\n".$r['id'].'||'.$r['title'].'||'.$titleurl.'||'.$r['newstime'].'||'.$r['titlepic'];
fwrite($flietxt,$txt);
}

#另一种就是控制循环的最后一行的输出
$i=0;
while($r=$empire->fetch($sql)){
$titleurl=sys_ReturnBqTitleLink($r);
if($i<count($r)){
$txt=$r['id'].'||'.$r['title'].'||'.$titleurl.'||'.$r['newstime'].'||'.$r['titlepic']."\n";
}else{
$txt=$r['id'].'||'.$r['title'].'||'.$titleurl.'||'.$r['newstime'].'||'.$r['titlepic'];
}
fwrite($flietxt,$txt);
$i++;
}

#最后一种是将最后要写入的内容进行裁剪,这种办法相对来说最简单
while($r=$empire->fetch($sql)){
$titleurl=sys_ReturnBqTitleLink($r); $txt.=$r['id'].'||'.$r['title'].'||'.$titleurl.'||'.$r['newstime'].'||'.$r['titlepic']."\n";
}
fwrite($flietxt,substr($txt, 0, (strlen($txt)-1)));
zagj11 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
fwrite($flietxt, trim($txt) );
[/Quote]

不是行的 空格.....是一行.... 如果按照你这样弄.会成了都没换行了.我需要保留上面所有的换行符号,但是因为while的原因.最后一行总是空的.....

我指的是最后一行是空格.如何去除...是因为

while($r=$empire->fetch($sql)){
$titleurl=sys_ReturnBqTitleLink($r);
$txt=$r['id'].'||'.$r['title'].'||'.$titleurl.'||'.$r['newstime'].'||'.$r['titlepic']."\n";
//fwrite($flietxt,$txt);
fwrite($flietxt, trim($txt) );
}

fclose($flietxt);


'\n'导致的最后一行永远都是空格..
xuzuning 2012-07-03
  • 打赏
  • 举报
回复
fwrite($flietxt, trim($txt) );
qq120848369 2012-07-03
  • 打赏
  • 举报
回复
就是去掉txt末尾重复的\n, 楼上即可.
yiwusuo 2012-07-03
  • 打赏
  • 举报
回复
这个问题你都能弄得这么复杂。
唠叨的
fwrite($flietxt, trim($txt) );
你怕没有换行符
那你就
fwrite($flietxt, trim($txt)."\n" );
mu_rain 2012-07-03
  • 打赏
  • 举报
回复
试试这样,而且以后类似问题,建议也这样解决。

$temp = array();
while($r=$empire->fetch($sql)){
$titleurl=sys_ReturnBqTitleLink($r);
$txt=$r['id'].'||'.$r['title'].'||'.$titleurl.'||'.$r['newstime'].'||'.$r['titlepic'];
//fwrite($flietxt,$txt);
$temp[] = $text;

}
fwrite($flietxt, implode("\n" , $temp ) );
fclose($flietxt);

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧