插入值后从txt文件中删除新行

时间:2014-11-18 11:43:11

标签: php arrays newline

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

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

它在每个项目内部创建每个项目,每行一个,但它也在文件末尾添加换行符。

这是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但不能解决我的问题。

有没有人可以帮我理解我遗失或错误的内容?

亲切的问候

布鲁斯

2 个答案:

答案 0 :(得分:3)

使用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);
}

答案 1 :(得分:1)

您是否尝试过首先编写新行而不是值(假设您已在文件中包含内容)?

fp = fopen("mylist.txt","rw+");

foreach(glob("folder/*.*") as $value){
    fwrite($fp, "\n".$value);
}