使用PHP的txt文件中的选项卡空间不一致

使用PHP的txt文件中的选项卡空间不一致,php,text-files,indentation,spaces,Php,Text Files,Indentation,Spaces,我已生成此附加文件,上传至此处: 该文件是使用PHP生成的\t用于插入选项卡空间。它已经找到了整个文件,但对于INR0564 D和INR0564 C之间的选项卡空间,该选项卡空间只有一个空白,而其他选项卡空间有4个空白,如66772255331和INR0564之间的空白 所以问题是,虽然\t用于在字符之间提供制表符空间,但为什么在不同的位置有不同的间距 下图是在升华文本上拍摄的,显示了上述不同的选项卡空间。 您的编辑器配置为将光标前进到下一个制表位。制表符宽度配置为4个字符时,制表符止点位于行偏

我已生成此附加文件,上传至此处: 该文件是使用PHP生成的\t用于插入选项卡空间。它已经找到了整个文件,但对于INR0564 D和INR0564 C之间的选项卡空间,该选项卡空间只有一个空白,而其他选项卡空间有4个空白,如66772255331和INR0564之间的空白

所以问题是,虽然\t用于在字符之间提供制表符空间,但为什么在不同的位置有不同的间距

下图是在升华文本上拍摄的,显示了上述不同的选项卡空间。

您的编辑器配置为将光标前进到下一个制表位。制表符宽度配置为4个字符时,制表符止点位于行偏移量0、4、8、a.s.o处。可以理解,偏移量11上的水平制表符将前进到偏移量12,而不是15(11+4)。它不是一个固定的宽度,但必须相对于固定的停止点进行查看。

您的编辑器配置为将光标前进到下一个选项卡停止点。制表符宽度配置为4个字符时,制表符止点位于行偏移量0、4、8、a.s.o处。可以理解,偏移量11上的水平制表符将前进到偏移量12,而不是15(11+4)。它不是一个固定的宽度,但必须与固定的停止点相关。

制表符空格与您在代码中给出正确的\t无关,它已正确生成。“行为”选项卡因编辑器类型而异

例如,如果您使用以下代码生成

 $myfile = fopen(getcwd()."/newfile.txt", "w") or die("Unable to open 
                  file!");
            $txt = "BATBALL88026613\n
                    667722553331\tINR0564D\tSeptember\t2.00Salary\n
                    051122334432\tINR0564C\tSeptember\t1.00Salary\n
                    056401112233\tINR0564C\tSeptember\t1.00Salary";
            fwrite($myfile, $txt);
            fclose($myfile);

如果你试着用记事本和记事本++打开它,情况会有所不同。这种不一致性在记事本++中不会出现。

制表符空格与您在代码中给出了正确的\t无关,它已正确生成。“行为”选项卡因编辑器类型而异

例如,如果您使用以下代码生成

 $myfile = fopen(getcwd()."/newfile.txt", "w") or die("Unable to open 
                  file!");
            $txt = "BATBALL88026613\n
                    667722553331\tINR0564D\tSeptember\t2.00Salary\n
                    051122334432\tINR0564C\tSeptember\t1.00Salary\n
                    056401112233\tINR0564C\tSeptember\t1.00Salary";
            fwrite($myfile, $txt);
            fclose($myfile);
如果你试着用记事本和记事本++打开它,情况会有所不同。记事本++中不会存在这种不一致性。

不会插入空格。它是由编辑器解释的单个字符

帮助以表格格式(即表格格式)写入数据。由于行已经由文本行提供,因此
选项卡
字符有助于创建列

编辑器将
选项卡
字符解释为将光标向右移动,而不是移动一个位置(与
空格
字符一样),直到到达下一个制表器停止

在计算机软件中,制表器停止通常设置在每8或4列。这意味着列
1
9
17
a.s.o.或
1
5
9
13
等。在您的图片中(以及您问题中的描述),您使用的选项卡的“大小”似乎是
4
列(这是当前最常用的值)

由于
选项卡
字符将光标发送到固定位置,因此其感知的“大小”不是固定的,它取决于
选项卡
字符之前的光标列

在图像中,数据的第一列有12个字符(它显示在编辑器中的列
1-12
)。然后,
选项卡
字符将光标发送到列
17
上的下一个制表器。下一个值(
INR0564
7个字符)显示在
17-23列中。下一个
选项卡
字符为“较短”,它只覆盖
1
列;它将光标发送到列
25
,其中显示
D
。下一个命令使光标跳转到列
29
3
列),其中不显示任何内容。然后还有另一个
选项卡
,它跨越
4个
字符,直到下一个制表器(在
33列
中)的
2.0SEp Salary
值开始

列、制表器anb和您的数据如下所示:

1   5   9   13  17  21  21  25  29  33 ...
v   v   v   v   v   v   v   v   v   v  ...
056665554531    INR0564 D       2.0Sep Salary
            .   |      .|.  |   |
            +-->|      >|+->+-->|
在上图中,点(
)标记光标在每列数据后的位置,管道(
|
)标记光标在显示
选项卡
字符后的位置。最后一行上的“箭头”描述了由于
选项卡
字符,光标如何跳过多列以到达下一个制表器。

没有插入空格。它是由编辑器解释的单个字符

帮助以表格格式(即表格格式)写入数据。由于行已经由文本行提供,因此
选项卡
字符有助于创建列

编辑器将
选项卡
字符解释为将光标向右移动,而不是移动一个位置(与
空格
字符一样),直到到达下一个制表器停止

在计算机软件中,制表器停止通常设置在每8或4列。这意味着列
1
9
17
a.s.o.或
1
5
9
13
等。在您的图片中(以及您问题中的描述),您使用的选项卡的“大小”似乎是
4
列(这是当前最常用的值)

由于
选项卡
字符将光标发送到固定位置,因此其感知的“大小”不是固定的,它取决于
选项卡
字符之前的光标列

在图像中,数据的第一列有12个字符(它显示在编辑器中的列
1-12
)。然后,
选项卡
字符将光标发送到列
17
上的下一个制表器。下一个值(
INR0564
7个字符)显示在
17-23列中。下一个
选项卡
字符为“较短”,它只覆盖
1
列;它将光标发送到列
25
,其中显示
D
。下一个