1

我有一个名为“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   

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

4

2 回答 2

3

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

于 2012-04-13T10:03:41.300 回答
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的东西。

于 2012-04-13T10:03:41.813 回答