Удалите пустые строки из TXT-файла, сохраняя возврат каретки
Я боюсь, что этот вопрос не будет слишком популярным и, возможно, будет отклонен, но я искал и искал на этом сайте (и другие тоже), и я не могу найти решение.
У меня есть текстовый файл, скажем, с таким содержанием:
Мне нужно удалить пустые строки, но сохранить существующие возвраты каретки, как это:
Код, который я использую:
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 и т. Д. В качестве символов для замены, но со всеми из них я получаю такой результат:
Пустая строка удаляется по желанию, но удаляются и возврат каретки, что в моем случае запрещено.
Так что мне интересно, если кто-нибудь может предложить способ получить мою цель:) Спасибо.
3 ответа
Обязательно должны быть дубликаты для замены, но просто прочитайте в массив и пропустите пустые строки:
$lines = file("file.txt", FILE_SKIP_EMPTY_LINES):
Затем зациклите массив echo
линии или implode()
чтобы вернуть его обратно в строку.
Мы можем удалить пустые строки и пробелы. Из случайного текстового файла. Он автоматически удалит пустые строки и пробелы, просто добавьте местоположение файла и распечатайте его.
Используйте этот код
__DIR__ . "/uploads/" . $randomFile;
$file_handle = fopen('uploads/' . $randomFile, 'r');
// $file_handle2 = preg_replace('/^[ \t]*[\r\n]+/m', '', $randomFile);
function get_all_lines($file_handle)
{
while (!feof($file_handle)) {
yield fgets($file_handle);
}
}
$count = 0;
foreach (get_all_lines($file_handle) as $line) {
$line = implode("\n", array_filter(explode("\n", $line)));
$newLine = trim($line);
$tempData = nl2br($line);
$tempData = explode("<br />", $tempData);
foreach ($tempData as $line) {
if (trim($line) != '') {
// echo $line."<br />";
echo (' <li>' . $line . '</li>');
}
}
}
fclose($file_handle);
@Abracadaver @nogad @GCRdev
Я пробовал твои методы, но у меня не получилось. Я наконец нашел способ (спасибо /questions/15261965/zamenit-neskolko-simvolov-novoj-stroki-tabulyatsii-probela/15261972#15261972), который я позволю здесь, если это будет полезно для кого-то:
$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);