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