2

我正在尝试将数据从 Isam 文件中分离出来,使用 fgets 和 substr 逐行循环以从行的正确位置获取正确的数据。

源数据:

000000124325424Productname    Type    Price    Weight    Unit    Unitcode
000000124325324Productname2   Type2   Price2   Weight2   Unit2   Unitcode2

问题是 substr 无法识别数据之间的那些额外空格,因此数据的位置每行都在变化。

Substr 是这样“看到”的行:

000000124325424Productname Type Price Weight Unit Unitcode

有什么办法可以保留项目之间的空间?

4

2 回答 2

2

编辑问题后,我突然想到您可能正在处理制表符分隔的字符串\t。无论哪种方式,在您尝试执行任何操作之前对每个字符串进行消毒substr()

$s = preg_replace('/\s+/', ' ', $s);

这将去除多个空白" "=> " "、制表符\t甚至换行符。


也许您可以explode()在消毒后找到更好的方法:

explode(" ", str_replace("\t", " ", $line1))[0] 

将始终是第一项,即没有额外空格的产品代码。

于 2015-10-03T17:08:21.153 回答
1

当您在网页中显示文本时,Web 浏览器不会显示多个空格。尝试将您的文本包装在预格式化标签中,就像这样

<pre>000000124325324Productname2   Type2   Price2   Weight2   Unit2   Unitcode2</pre>

然后浏览器将使用显示的所有空格渲染它。

您可以在浏览器中使用 View Source... 解决此类问题。

于 2015-10-03T16:59:40.817 回答