2010-08-18 61 views
6

它看起来好像fgets在它返回的所有内容之后放置一个空格。 下面是一些示例代码: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); 
} 
?> 

返回

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 

为什么会出现行的内容与“词”之间的空间? 为什么这个空间不在文件末尾(Blablablaword)?

你能告诉我如何摆脱这个空间吗? 非常感谢:-)!

+0

这是习惯接受的解决方案(一个复选框,我相信)它是否适合你,让别人喜欢自己就会知道,如果你不再需要更多的阐述。 – 2010-08-18 14:47:41

+0

我认为绿色检查就足够了?对不起,如果我错了。 – Chris 2010-08-18 17:52:22

回答

12

fgets()返回线换行符(\n)。然后,与其他所有空格一样,这将作为HTML中的空间呈现。

删除尾随换行符,使用

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

感谢您的解释,非常感谢。 – Chris 2010-08-18 14:44:27

7

我相信fgets也会返回行尾字符(\ n),并且这会在html中呈现为空格。

如果你想删除的行中的所有尾随空格,你可以使用rtrim

+0

感谢您的快速回复:-) – Chris 2010-08-18 14:44:05