包括在php中使用fgets时的前导空格

时间:2014-04-23 14:52:59

标签: php text str-replace fgets

我使用PHP使用fgets()命令读取一个简单的文本文件:

$file = fopen("filename.txt", "r") or exit('oops');
$data = "";

while(!feof($file)) {
    $data .= fgets($file) . '<br>';
}

fclose($file);

文本文件在每行的第一个字符前面有前导空格。 fgets()没有抓住空白区域。知道为什么吗?我确保对变量使用trim()。我试过这个,但领先的白色空间仍然没有出现:

$data = str_replace(" ", "&nbsp;", $data);

不知道从哪里开始。

提前致谢,

道格

更新

如果我将文本转储到文本区域,文本会正确显示,但如果我将其转发到网页则不会。

4 个答案:

答案 0 :(得分:0)

尝试使用:

$data = preg_replace('/\s+/', '&nbsp;', $data);

fgets不应修剪空格。

答案 1 :(得分:0)

尝试使用file_get_contents读取文件,它成功读取文件开头的空格。

$data = file_get_contents("xyz.txt");

$data = str_replace(" ","~",$data);

echo $data;

希望这有帮助

答案 2 :(得分:0)

函数fgets()抓取空格。我不知道你正在使用$ data变量做什么,但如果你只是在HTML页面上显示它,那么你将看不到空格。这是因为HTML会删除所有空格。尝试使用此代码阅读并显示您的文件内容:

$file = fopen('file.txt', 'r') or exit('error'); 
$data = '';

while(!feof($file)) 
{
    $data .= '<pre>' . fgets($file) . '</pre><br>'; 
}

fclose($file);

echo $data;

PRE标签允许您显示$ data而无需解析它。

答案 3 :(得分:0)

我目前有相同的要求,并且经验表明某些字符被写为制表符。

我做的是:

$tabChar = '&nbsp;&nbsp;&nbsp;&nbsp;';
$regularChar = '&nbsp;'

$file = fopen('/file.txt');
while($line = fgets($file)) {

   $l = str_replace("\t", $tabChar, $line);
   $l = str_replace(" ", $regularChar, $line);
   // ...
   // replacing can be done till it matches your needs

   $lines .= $l; // maybe append <br /> if neccessary

}

$result = '<pre'> . $lines . '</pre>';

这个对我有用,也许对你有帮助: - )。