php写入文件更改字符串外观

时间:2012-04-13 09:58:57

标签: php string file-io fopen fwrite

我有一个名为“B-small-practice.in”的文件,其内容如下

this is a test
foobar
all your base
class
pony along 

我写了一个代码,它的功能是反转每行中的单词并将它们写入另一个文件“output.txt”。
这是代码:
    

$file = fopen("B-small-practice.in", "r");
$lines = array();
while(!feof($file)){
$lines[] = fgets($file); 
}
fclose($file);

$output = fopen("output.txt", "a");

foreach($lines as $v){
    $line = explode(" ", $v);
    $reversed = array_reverse($line);
    $reversed = implode(" ", $reversed);
    fwrite($output, $reversed."\n");
}

fclose($output);
?>

代码的预期输出将写入“output.txt”以下内容:

    test a is this
    foobar
    base your all
    class
    along pony 

但这就是我得到的:

test  
  a is this
foobar  

base  
 your all  
class

along  
 pony   

是什么让它看起来像那样?

2 个答案:

答案 0 :(得分:3)

爆炸后的“最后”部分仍包含换行符,因此在重新录制和爆炸后,换行符位于第一个单词后面。在爆炸之前只需trim()你的字符串,并在输出时再次添加换行符("\n")(你已经这样做了)。

答案 1 :(得分:2)

这些行已经有\n,你没有剥离。

试试这个:

<?php

$file = fopen("B-small-practice.in", "r");
$lines = array();
while(!feof($file)){
$lines[] = fgets($file); 
}
fclose($file);

$output = fopen("output.txt", "a");

foreach($lines as $v){
    $v = trim($v);
    $line = explode(" ", $v);
    $reversed = array_reverse($line);
    $reversed = implode(" ", $reversed);
    fwrite($output, $reversed."\n");
}

fclose($output);
?>

trim函数应该从那里获取额外的\n