Удалите пустые строки из текстового файла, сохраняя возврат каретки

Я боюсь, что этот вопрос не будет слишком популярным и, возможно, будет отклонен, но я искал и искал на этом сайте (и другие тоже), и я не могу найти решение.

У меня есть текстовый файл, скажем, с таким содержанием:

введите описание изображения здесь

Мне нужно удалить пустые строки, но сохранить существующие возвраты каретки, как это:

введите описание изображения здесь

Код, который я использую:

if ($file = fopen("file.txt", "r")) {
while(!feof($file)) {
$line = fgets($file);
echo str_replace("\r\n","",$line)
}
fclose($file);
}

Как указано выше, я пытался использовать такие функции, как str_replace, preg_replace, и \ r \ n или \ n \ n и т. Д. В качестве символов для замены, но со всеми из них я получаю такой результат:

введите описание изображения здесь

Пустая строка удаляется по желанию, но также удаляются и возврат каретки, что не разрешено в моем случае.

Поэтому мне интересно, если кто-нибудь может предложить способ получить мою цель 🙂 Спасибо.

0

Решение

Обязательно должны быть дубликаты для замены, но просто прочитайте в массив и пропустите пустые строки:

$lines = file("file.txt", FILE_SKIP_EMPTY_LINES):

Затем зациклите массив echo линии или implode() чтобы вернуть его обратно в строку.

0

Другие решения

@Abracadaver @nogad @GCRdev

Я пробовал твои методы, но у меня не получилось. Я наконец нашел способ (спасибо https://stackoverflow.com/a/20719126), что я и здесь приведу, если это кому-то пригодится:

$file = fopen("file.txt","r");
while($line = fgets($file)){

$tempData = nl2br($line);
$tempData = explode("<br />",$tempData);

foreach ($tempData as $val) {
if(trim($val) != '')
{
echo $val."<br />";
}
}
}
fclose($file);
-1

По вопросам рекламы [email protected]