2010-08-18 13 views
6

wydaje się, że fgets umieszcza spację po wszystkim, co zwraca. Oto niektóre przykładowy kod:Automatyczna spacja po wyniku fgets?

<?php 
Echo "Opening " . $_SERVER{'DOCUMENT_ROOT'} . "/file.txt" . "...<br>"; 
$FileHandle = @Fopen($_SERVER{'DOCUMENT_ROOT'} . "/file.txt", "r"); 
If ($FileHandle){ 
    Echo "File opened:<br><br>"; 
    While (!Feof($FileHandle)){ 
     $Line = Fgets($FileHandle); 
     Echo $Line . "word<br>"; //Should be LINECONTENTSword, no space. 
    } 
    Fclose($FileHandle); 
} 
?> 

która zwraca

Opening /var/www/vhosts/cqe.me/httpdocs/file.txt... 
File opened: 

First line word 
Second line word 
3rd line word 
Another line of text word 
Blablablaword 

Dlaczego istnieje przestrzeń pomiędzy zawartością Linia i „słowa”? A dlaczego ta przestrzeń nie znajduje się na końcu pliku (Blablablaword)?

Czy możesz mi powiedzieć, jak pozbyć się tego miejsca? Wielkie dzięki :-)!

+0

jest zwyczajem, aby zaakceptować rozwiązanie (pole wyboru, wierzę), czy to działa dla Ciebie, tak że inni tacy jak ja będą wiedzieć, czy nie trzeba już więcej opracowanie. –

+0

Myślałem, że wystarczy zielony czek? Przepraszam, jeśli się mylę. – Chris

Odpowiedz

12

fgets() zwraca linię i znak nowej linii (\n). To wtedy, podobnie jak wszystkie inne spacje, będzie renderowane jako spacja w HTML.

Aby usunąć końcowym znakiem nowej linii, użyj

$line = rtrim($line, "\r\n"); 
// Trims \r, \n and \r\n, which are all considered 
// newlines on different platforms 
+0

Dzięki za wyjaśnienie, bardzo docenione. – Chris

7

Wierzę, że fgets zwraca również znak końca wiersza (\ n), a to jest renderowane jako spacja w html.

Jeśli chcesz usunąć całą tylną przestrzeń z linii, można użyć rtrim

+0

Dziękuję za szybką odpowiedź :-) – Chris