通过空格插入数组

时间:2013-12-11 16:03:28

标签: php arrays text-files

我有这个TXT文件,我将每行插入到数组中,如下所示:

  

数组([0] => [1] => 8100 [2] => 623 [3] => 09:04 [4] => AM [5] => 00:26 [6] => L [7] => S-ED [8] => 768 [9] =>#4506856439 [10] => 00:01 [11] =>)

 CO     USER    TIME    DURATION  TYPE   ACCOUNT_CODE  CALLED_NUM      RING_TIME
 8100   623   09:04 AM     00:26  L S-E               250821613987
 8021   8816  09:06 AM     00:20  I S-E  D 768        #4506856439        00:01
 8020         09:06 AM            I  N   D 603        #45424044499        00:30
 8011         09:07 AM     00:11  I S-E  D 727        #7546355292        00:02
  "     8817               00:11  
  "                        00:02  H  
 8100   623   09:07 AM     00:01  L S-E               5542204034
 8007   8818  09:08 AM     00:13  I S-E  D 618        #45269021726        00:01
 8013   8811  09:09 AM     00:01  I S-E  D 770        #436217227         00:01
 8014         09:10 AM     00:16  I S-E  D 652        #4523859922        00:01

我想将它插入一个包含所有参数的数组中,即使是空的,也是如此 但我无法让它发挥作用。

我试过了:

$fh = fopen('captures/131210.txt','r');
 while ($line = fgets($fh)) {
  $tempexp = preg_split('/\s+/', $line);
  print_r($tempexp);
  echo "<br />";
 }
fclose($fh)

但它为某些值提供了奇怪的输出,例如:

  

数组([0] =&gt; [1] =&gt;“[2] =&gt; 8812 [3] =&gt; 00:16 [4] =&gt;)

非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

如果文本文件的布局完全基于空格,则可以使用确切的列来提取数据。由于列的宽度不同,因此不能简单地将其写入一个循环中。

使用substr函数获取部分行(第一个数字是索引,第二个数字是读取的长度)

$fh = fopen('captures/131210.txt','r');
 while ($line = fgets($fh)) {
  $co = substr($line, 0, 7);
  $user = substr($line, 7, 6);
  ... etc ...
  echo "<br />";
 }
fclose($fh)

您可能需要根据内容以及您要对其执行的操作进一步解析单独的部分 - 解析为整数,日期,时间等。