使用 PHP_EOL 在 txt 文件中写入数据时如何摆脱 space

how to get rid of space when writing data in txt file with PHP_EOL

我正在将数据写入带有换行符的 .txt 文件:

// put content in .txt file with linebreaks; unique_id first
        $userinput = $unique_id.PHP_EOL;
        $userinput .= date('d M Y h:i').PHP_EOL;
        $userinput .= $userinput1.PHP_EOL;                                                                              
        $userinput .= $userinput2.PHP_EOL;

        $messagefile = './messages/';
        $messagefile .= $unique_id . '.txt'; //name of the file is the same as unique_id

        // create file in messages folder
        $h = fopen($messagefile, 'w+');
        fwrite($h, html_entity_decode($userinput));
        fclose($h);

我的 .txt 文件现在看起来像这样:

20191103135045 // unique id = date
03 Nov 2019 01:50
John
Lorem ipsum dolor sit amet

为了读取 .txt 文件的第一行,我使用了这个:

// get data out of txt file 
    $msg = '../messages/';
    $msg .= $file;
    $fh = fopen($msg, 'r'); 
    $lines = file($msg);// filedata into an array

    $file_id = $lines[0]; // file id

现在是在表单中使用第一行的内容(唯一 ID 或日期):

<input type="hidden" class="form-control" name="delete_file" value="<?php echo $file_id; ?>" /> 

当我回显隐藏输入字段的值时,它说后面有一个space

if(isset($_POST['delete_file'])) {
        $filename = '../messages/'.$_POST['delete_file'].'.txt';
        echo $filename;

我的回声是这样的:20191103135045.txt

但它是这样的:20191103135045 .txt

那么 5. 之间的 space 是从哪里来的呢? 当我将内容放入 .txt 文件时,它必须对 PHP_EOL 做些什么?

你需要使用

$lines = file($msg, FILE_IGNORE_NEW_LINES); 

来自 manual ...

FILE_IGNORE_NEW_LINES

Omit newline at the end of each array element

没有这个,你会在每行的末尾看到额外的字符。