【问题标题】:remove new line from txt file after insert value插入值后从 txt 文件中删除新行
【发布时间】:2015-01-15 14:15:39
【问题描述】:

我以这种方式从文件夹中创建一个 txt 文件:

$fp = fopen("mylist.txt","rw+");
foreach(glob("folder/*.*") as $value){
fwrite($fp,$value."\n");
}

它在 txt 中创建每个项目,每行一个,但它还在文件末尾添加一个换行符。

这是mylist.txt的内容:

foldelr/file1.mp3
folder/file2.mp3
(BLANK NEWLINE)

我尝试删除txt文件末尾的空白换行符,这样:

$filetxt = fopen("mylist.txt","r");
$rtrim = rtrim($filetxt, "\n");
$newfile = file_put_contents("newfile.txt", $rtrim);

但它不起作用,因为在“newfile.txt”中,我在最后一个文件名之后仍然有换行符。

我尝试将文件转换为数组,使用“array_diff()”删除最后一行,但它失败了。 我还尝试了此线程中的所有建议:remove new line characters from txt file using php 但没有解决我的问题。

有人可以帮我理解我遗漏或错误的地方吗?

亲切的问候

布鲁斯

【问题讨论】:

    标签: php arrays newline


    【解决方案1】:

    使用 file_get_contents 方法对我来说效果很好

        $fp = fopen("mylist.txt","rw+");
        foreach (glob("test/*.*") as $value) {
            fwrite($fp, $value . "\n");
        }
    
        $filetxt = file_get_contents("mylist.txt");
        $rtrim =  rtrim($filetxt, "\n");
        $newfile = file_put_contents("mylist.txt", $rtrim);
    

    或者您也可以使用数组计数删除最后一个换行符。

    $fp = fopen("mylist.txt","rw+");
    $i =0;
    foreach(glob("folder/*.*") as $value){
      $i++;
      if($i < count(glob("folder/*.*"))) 
        fwrite($fp,$value."\n");
      else 
        fwrite($fp,$value);
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过先写入新行并且仅写入值(假设您已经在文件中有内容)?

      fp = fopen("mylist.txt","rw+");
      
      foreach(glob("folder/*.*") as $value){
          fwrite($fp, "\n".$value);
      }
      

      【讨论】:

      • 谢谢,解决了另一个问题。
      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多