2017-05-15 3 views
1

ich diesen array_diff für zwei Text verwenden zu entfernen, aber ich kann nicht leere Zeile entfernen Verwendung dieser preg_replaces an den und der TextzeilenWie leere Zeile am Ende des Textes hier

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

ich soll nicht PHP.EOL löschen, aber es macht eine leere Zeile. was soll ich machen?

<?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); } 

?> 

Beispiel output.txt

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

I $ result denken = trim ($ result); muss genug sein. –

+0

check this [trim()] (https://www.w3schools.com/php/func_string_trim.asp) – julekgwa

+0

Es funktioniert nicht. Haben Sie es versucht? – Andrew

Antwort

1

einen anderen Ansatz versuchen:

$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)); 
  • Lesen Sie die Dateien in ein Array mit file() die Zeilenumbrüche FILE_IGNORE_NEW_LINES Strippen und das Überspringen Leerzeilen FILE_SKIP_EMPTY_LINES
  • Run array_diff() auf den Arrays
  • implode() das Ergebnis-Array auf eine neue Zeile und schreiben Sie es in die Ausgabedatei
Verwandte Themen