txt文件中“echo fgets()”的结果不一样

时间:2013-04-21 20:05:06

标签: php html fgets

我正在尝试使用以下代码在我的网站中包含一个带有php的txt文件

    <?php 
      $myFile = '[http://users.otenet.gr/~vag1976/optonio/NOAAMO.TXT]';
      $fp = fopen("$myFile", "r");
      while(!feof($fp)) { 
        echo fgets($fp) . "<br />";
      }
      fclose($fp);
    ?>

问题是使用这个PHP代码的结果与原始代码不完全相同。单词之间的间隙(空格)丢失,仅由一个空格代替。观看结果很糟糕。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

这不是PHP问题,只是浏览器不会呈现多个“普通”空格(如果您不使用非空格&nbsp;或特殊<pre>标记)。

您还应该使用实线换行而不是<br />标记:

<?php 
  $myFile = '[http://users.otenet.gr/~vag1976/optonio/NOAAMO.TXT]';
  // You don't need to use "$myFile" here, just use the variable without quotes
  $fp = fopen($myFile, "r");
  echo "<pre>";
  while(!feof($fp)) { 
    echo fgets($fp) . "\n";
  }
  echo "</pre>";
  fclose($fp);
?>

如果您的文件不是太大,您也可以使用file_get_contents()

<?php
  $myFile = '[http://users.otenet.gr/~vag1976/optonio/NOAAMO.TXT]';
  echo '<pre>' . file_get_contents($myFile) . '</pre>';
?>

答案 1 :(得分:0)

你可以写一些<pre> - 标签:

<pre><?php /* your code */ ?></pre>

<pre>保留空格。

浏览器总是将多个后续空格替换为一个空格。

然后,您也可以使用\n代替<br />进行换行。

答案 2 :(得分:0)

要使空格使用<pre></pre>标记。

答案 3 :(得分:0)

您需要使用<pre>标记。它保留了多余的空白。

<?php 
  $myFile = '[http://users.otenet.gr/~vag1976/optonio/NOAAMO.TXT]';
  $fp = fopen("$myFile", "r"); 
  echo "<pre>";
  while(!feof($fp)) { 
    echo fgets($fp) . "<br />";
  }
  echo "</pre>"; 
  fclose($fp);
?>

另外,我希望您意识到<br />不是HTML5语义丰富的语言学。

答案 4 :(得分:0)

您似乎需要在fgets()标记中附上<pre>返回的内容,以保留空格。

原始答案:https://stackoverflow.com/a/2805900/2305229

修改后的代码:

<?php 
  $myFile = '[http://users.otenet.gr/~vag1976/optonio/NOAAMO.TXT]';
  $fp = fopen("$myFile", "r");
  while(!feof($fp)) { 
    echo "<pre>";
    echo fgets($fp) . "<br />";
    echo "</pre>"
  }
  fclose($fp);
?>