使用PHP打开文本文件的问题 - 删除空格

时间:2010-05-10 19:43:05

标签: php

我正在尝试使用PHP打开和处理ASCII文件,但是遇到了问题。问题 是删除空格,我不希望发生这种情况,因为文件的宽度是固定的。

我使用的PHP脚本是:

$myFile = Test.SEG";
$file_handler = fopen ($myFile, r) or die ("Can't open SEG File.");
while (!feof($file_handler))
    {
    $dataline = fgets($file_handler);
    echo $dataline, "<br />";
    }

我尝试在这里粘贴原始文件的样本,但这里也删除了空格!

在这个阶段,我只是按步骤构建脚本,一次一步地工作,但这是我已经得到的。我打算在'$ dataline'上使用substr()来挑选我需要的字段。

有关如何保持空间完整的任何建议?有些东西告诉我它与编码有关,但我不确定。

谢谢!

6 个答案:

答案 0 :(得分:14)

我不认为他们真的被删除了。尝试在之前添加<pre>并在</pre>之后添加{{1}}以确定它们是否真的消失了。我认为只是HTML呈现使它们显得不见了。

答案 1 :(得分:3)

它与编码无关,以及浏览器将输出视为HTML的所有事实。要么发送标题,让浏览器将其视为text/plain,要么将其放在<pre>块中。

答案 2 :(得分:0)

浏览器不关心多个空格,但如果您看到源,则会看到正确的输出。 如果我理解正确,您应该用'nbsp'代替所有空格字符。

编辑:pre有人写在这里更好

答案 3 :(得分:0)

在HTML页面上呈现文本时,浏览器不会保留空格。因此,当多个空格折叠到单个空间时,将忽略换行符和制表符。

如果您查看页面来源,则可以看到原始空白。 <pre>块将告诉浏览器在页面上显示文本时保留空白。举个例子:

this is   just


a test
of   some

    data.

我在本地测试了你的代码,似乎有一些错误。

<?php

$myFile = "Test.SEG"; // missing opening quote

$file_handler = fopen($myFile, "r") // missing quotes for read mode flag
                or die ("Can't open SEG File.");

while (!feof($file_handler)) {
  $dataline = fgets($file_handler);
  echo $dataline; // fgets keeps the newline,
                  // so you do not need to output another
}

答案 4 :(得分:0)

尝试此操作(“&amp;”和“nbsp;”之间没有空格):


echo str_replace(' ', '& nbsp;', $dataline)."\n";

答案 5 :(得分:0)

您可以覆盖预标记css, white-space:pre-line