2013-06-16 4 views
4

У меня есть текстовый файл, в котором есть пустые строки. Значение линий, которые ничего не имеют на них и просто занимают пространство.Удалить пустые строки из текстового файла

Это выглядит следующим образом:

The 

quick 
brown 

fox jumped over 
the 

lazy dog 

и мне нужно, чтобы выглядеть следующим образом:

The 
quick 
brown 
fox jumped over 
the 
lazy dog 

Как я могу удалить эти пустые строки и принимать только те строки, с содержанием и записать их к новому файлу?

Вот что я знаю, как это сделать:

$file = fopen('newFile.txt', 'w'); 
$lines = fopen('tagged.txt'); 
foreach($lines as $line){ 
    /* check contents of $line. If it is nothing or just a \n then ignore it. 
    else, then write it using fwrite($file, $line."\n");*/ 
} 
+0

Возможно, вы имели в виду 'файл ('tagged.txt')' вместо? – Jon

+0

str_replace() double line break –

+2

Вы можете использовать 'sed':' sed -e '/^$/d' tagged.txt> newFile.txt'. – Gumbo

ответ

7

Если файл не слишком велик:

file_put_contents('newFile.txt', 
        implode('', file('tagged.txt', FILE_SKIP_EMPTY_LINES))); 
+0

Это длинный, 200k, линий, но просто текст, поэтому он не такой большой. – JayGatz

+0

Спасибо, это сработало! – JayGatz

-1

попробовать с StrPos. выполните поиск \ n. если возвращаемое значение 0 вами задана линия

1
file_put_contents(
    "new_file.txt", 
    implode(
    "", 
    array_filter(
     file("old_file.txt") 
    )) 
); 

Этот код сначала считывает файл в массив (file()), отфильтровывает пустые элементы (array_filter), а затем записывает их в новый файл. Разделитель impode пуст, так как file оставляет символы \n в конце каждой строки.

1

Вы можете сделать все это на одном дыхании:

file_put_contents('newFile.txt', 
    preg_replace(
     '/\R+/', 
     "\n", 
     file_get_contents('tagged.txt') 
    ) 
); 
2

Вот Еогеасп решение, основанное только отфильтровать пустые строки (без запись в файл):

$lines = file('in.txt'); 
foreach ($lines as $k => $v) { 
    if (!trim($v)) 
     unset($lines[$k]); 
} 
2
file_put_contents('newFile.txt', 
    preg_replace(
     '~[\r\n]+~', 
     "\r\n", 
     trim(file_get_contents('tagged.txt')) 
    ) 
); 

Мне нравится \r\n :)

Смежные вопросы