Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP打开文本文件时出现问题-已删除空格_Php - Fatal编程技术网

使用PHP打开文本文件时出现问题-已删除空格

使用PHP打开文本文件时出现问题-已删除空格,php,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 $datalin

我试图用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 />";
    }
$myFile=Test.SEG”;
$file_handler=fopen($myFile,r)或die(“无法打开SEG文件”);
而(!feof($file_handler))
{
$dataline=fgets($file\u handler);
echo$dataline,“
”; }
我试着在这里粘贴原始文件的样本,但是这里的空格也被删除了

在这个阶段,我只是分步构建脚本,一步一步地工作,但这是我所能做到的。我计划在“$dataline”上使用substr()来选择我需要的字段

关于如何保持空格的完整性有什么建议吗?有人告诉我这与编码有关,但我不确定


谢谢!

我不认为它们真的被删除了。试着在它们之前和之后添加
,看看它们是否真的消失了。我认为只是HTML呈现使它们看起来消失了。

这与编码无关,所有的一切都与您的浏览器将输出视为HTML这一事实有关d一个标题,让浏览器将其视为
文本/纯文本
,或将其放在
块中。

浏览器不关心多个空格,但如果看到源代码,就会看到正确的输出。 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
}
如果我理解正确,您应该将所有空格字符替换为“nbsp”


编辑:pre更好,正如有人在这里写的那样

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

如果查看页面的源代码,您可以看到原始空白。当在页面上显示文本时,
块将告诉浏览器保留空白。例如:


echo str_replace(' ', '& nbsp;', $dataline)."\n";
这只是 测验 一些 数据。 我在本地测试了您的代码,其中似乎有一些错误

试试这个(在“&”和“nbsp;”之间没有空格):


您可以覆盖预标记css,空白:预行

什么是
var\u转储(文件获取内容('Test.SEG'))
生成的?您可以显示文件的示例文本吗?(参考)和/或“查看源代码”“为了让页面显示实际的未报告输出。我希望我能对建议将非HTML内容包装在
标记中的每个答案进行向下投票。你是“驾车向下”投票人吗?”?我希望你能解释你的推理。@erisco-别费心跟白痴推理。OP正在输出到HTML,使用
是处理HTML的方式(在
.shubder之外)。“所以你的答案很好。”萨拉特:我不建议他永久使用它——我建议他尝试一下,以证明它们是否仍然存在。提供的代码片段显然只是用于故障排除目的,可能不会在生产中使用。只有在你没有读到我的答案的情况下,否决权似乎是一个合理的回答。谢谢你——我会解决需要解决的问题。你说得对-html源代码中有空格。谢谢,我将尝试用下面看到的“替换”。