fwrite($flietxt,$txt);
fclose($flietxt);最后一行总是空的.有时候随机选择的时候选择到最后一行总是空的容易出现错误.有什么办法可以删除掉最后一行...

解决方案 »

  1.   

    fwrite($flietxt, trim($txt) );
      

  2.   


    不是行的 空格.....是一行.... 如果按照你这样弄.会成了都没换行了.我需要保留上面所有的换行符号,但是因为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'导致的最后一行永远都是空格..
      

  3.   


    #最简单的办法将“\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))); 
      

  4.   

    #3的最后一种方法直接:
    fwrite($flietxt,substr($txt, 0, -1)); 
      

  5.   

    试试这样,而且以后类似问题,建议也这样解决。$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);
      

  6.   

    这个问题你都能弄得这么复杂。
    唠叨的
    fwrite($flietxt, trim($txt) );
    你怕没有换行符
    那你就
    fwrite($flietxt, trim($txt)."\n" );
      

  7.   

    就是去掉txt末尾重复的\n, 楼上即可.
      

  8.   

    你问题的标题是:如何删除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 应该就不难理解了