我需要在网页中显示一个纯文本文件,其中包含两个空格制表符的数据列。
我所做的是使用 PHP 读取文本文件并在<pre>
标签之间打印出来以使用等宽字体,如下所示:
<pre>
<?php
$fn="data.txt";
$fi=fopen($fn, "r");
$fc=fread($fi, filesize($fn)); //open and read text file
fclose($fi);
$fc=str_replace("\t", " ", $fc); //replace tabs with two spaces
print($fc); //print data between PRE tags
?>
</pre>
它几乎可以工作,但是标签很麻烦。用两个空格替换制表符是微不足道的,但随后非空白字符被推过而不是吸收到制表符中。真正的制表符吸收n-1
非空白字符(其中n
是每个制表符的空格数)。
例如,下表应显示为:
| | 43| 43| 7| | |
| 12|128|128|128| | 53|
| 3| 3| 3| 3| | |
| | | 21| 21| 39| |
然而,通过盲目地用两个空格替换所有制表符,我们得到了:
| | 43| 43| 7| | |
| 12|128|128|128| | 53|
| 3| 3| 3| 3| | |
| | | 21| 21| 39| |
我试图找出一种(相当简单的)方法将制表符转换为空格,同时考虑不占用完整n
空间的制表符。