【问题标题】:How to remove blank line at the end of the text here如何在此处删除文本末尾的空白行
【发布时间】:2017-05-15 18:48:27
【问题描述】:

我将这个 array_diff 用于两个文本,但我无法使用这些 preg_replaces 在文本行的 and 处删除空白行

$result = preg_replace('/^[ \t]*[\r\n]+/m', '', $result);
$result =  preg_replace('/[\r\n]+$/', '', $result);

我不应该删除 PHP.EOL 但它会产生一个空行。我该怎么办?

<?php
$new = explode(PHP_EOL, file_get_contents('new.txt').PHP_EOL);
$old = explode(PHP_EOL, file_get_contents('old.txt').PHP_EOL);
$result = array_diff($new, $old);

$output= fopen("Output.txt", "w") or die("Unable to open file!");
foreach($result as $value){
fwrite($output, $value.PHP_EOL); }

?>

output.txt 示例

4. data
3. data
2. data
1. blank line

【问题讨论】:

标签: php arrays file


【解决方案1】:

尝试不同的方法:

$new = file('new.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$old = file('old.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$result = array_diff($new, $old);
file_put_contents('Output.txt', implode(PHP_EOL, $result));
  • 使用file() 将文件读入一个数组,去除换行符FILE_IGNORE_NEW_LINES 并跳过空行FILE_SKIP_EMPTY_LINES
  • 在阵列上运行 array_diff()
  • implode() 将结果数组换行并写入输出文件

【讨论】: