file_put_contents,file_append和换行符

use*_*965 33 php line-breaks

我正在编写一个PHP脚本,将数字添加到文本文件中.我想在每一行都有一个数字,如下所示:

1
5
8
12
Run Code Online (Sandbox Code Playgroud)

如果我使用file_put_contents($filename, $commentnumber, FILE_APPEND),结果如下:

15812
Run Code Online (Sandbox Code Playgroud)

如果我添加换行符file_put_contents($filename, $commentnumber . "\n", FILE_APPEND),则在每个数字后面添加空格,在末尾添加一个空行(下划线表示空格):

1_
5_
8_
12_
_
_
Run Code Online (Sandbox Code Playgroud)

我如何获得该功能以我想要的方式添加数字,没有空格?

eri*_*dal 56

您是否尝试使用PHP EOL常量?


file_put_contents($filename, $commentnumber . PHP_EOL, FILE_APPEND)
Run Code Online (Sandbox Code Playgroud)

- - 添加 - -

我只是意识到我的文件编辑器做了同样的事情,但不要担心,只是编辑放置在那里的幽灵角色,表示有换行符你可以尝试这个

A file with EOL after the last number looks like:
1_
2_
3_
EOF

but a file without that last character looks like

1_
2_
3
EOF

where _ means a space character

您可以尝试使用php解析文件内容以查看其中的内容


$lines = explode( PHP_EOL, file_get_contents($file));
foreach($lines as $line ) {
    var_dump($line);
}

Run Code Online (Sandbox Code Playgroud)

...棘手


The*_*can 16

保罗的答案有正确的方法,但他有一个错误.你需要的是以下内容:

file_put_contents($filename, trim($commentnumber).PHP_EOL, FILE_APPEND);
Run Code Online (Sandbox Code Playgroud)

PHP_EOL常量确保使用在mac,windows和unix系统上结束的右行,trim函数删除字符串两侧的任何换行符或空格.转换为整数将是一个巨大的错误,因为1.你可能最终得到零,特别是因为空格或特殊字符(无论它们来自哪里......)2.ids不一定需要是整数


M_R*_*R_K 11

哦,伙计们!只是使用

\ r \n

...


Tim*_*mwi 2

您提供的代码中没有任何内容会生成这些空格,除非$commentnumber已经包含开始的空格。如果是这种情况,只需使用trim($commentnumber)即可。

您的代码中也没有任何内容可以解释文件底部的空行,除非$commentnumber可以是空字符串。如果是这种情况,并且您希望它输出数字0,请使用intval($commentnumber)

当然,您只需要这两者之一。如果要保留类似字符串的内容,请使用trim(); 如果您总是想要整数,请使用intval(),它已经自动修剪它。

也有可能您不小心编写" \n""\n"实际代码,但在您在这里发布的代码中它是正确的。

  • 嗯,**在 HTML 中**这是完全正常的。 (3认同)