2

我用随机数创建一个文件:

<?php
$file = 'test.txt';
for ($i=1; $i<=100; $i++) {
$rand_num = rand(10000,20000);
file_put_contents($file, $rand_num . PHP_EOL, FILE_APPEND);
}
?>

然后我使用“文件”从文件中读取数据并操作每一行(此处未包含在代码中)。当我再次将数据放入文件时 - 在 $value 之后有一个换行符:

<?php
$file = 'test.txt';
$fp = fopen($file, 'rb');
$content = file($file);
file_put_contents($file, '');
foreach ($content as $value){
file_put_contents($file, $value . PHP_EOL, FILE_APPEND);
}
?>

而不是给我:

190191
920191
829281

它给了我:

190191

920191

829281

如果我这样做: $processed_line = "$value is good";

它将显示:

190191
value is good
920191
value is good
829281
value is good

而不是将字符串放在 $value- 190191 旁边是好的。

任何的想法?感觉就像我错过了一些微小而愚蠢的东西。谢谢。

4

2 回答 2

1

用作$value = trim($value, "\r\n");循环中的第一行

问题是因为在值的末尾你已经有了\n符号

于 2013-10-23T02:06:34.597 回答
1

默认情况下,获取文本文件中的行时仍附加任何换行符;在您的内部foreach附加另一个,因此是空行。

您可以使用该FILE_IGNORE_NEW_LINES标志来file()取消每个数组元素的换行符:

$content = file($file, FILE_IGNORE_NEW_LINES);
于 2013-10-23T02:11:18.233 回答