我正在尝试使用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()来挑选我需要的字段。
有关如何保持空间完整的任何建议?有些东西告诉我它与编码有关,但我不确定。
谢谢!
答案 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