-3

私はPHPで以下のような$ lineを持っています

33 0 0 51037280 396822 15 16 0 0 0 0 20907 143197 57377 27 12 51 10 7.33 45.8 17:07:31

次のように、スペースで区切られた各値を作成して配列し、この配列に配置しようとします。

$parts=explode(" ", $line)

20 個のインデックスが必要で、この $line には 21 個の列があります。しかし、私がこれを行うとき:

   $size=sizeof($parts)

echo $size は 58 を返します。どうしてこれが可能なのでしょうか。$line の項目を配列に挿入するより良い方法はありますか? 値の間に不規則な量のスペースがあるように見えます。私がこれを行うとき:

print_r($パーツ)

私は以下を取得します:

[0] => [1] => 33 [2] => [3] => [4] => 0 [5] => [6] => [7] => 0 [8] => [9] => [10] => 51037280 [11] => [12] => [13] => [14] => [15] => 396822 [16] => [17] => [18] => [19] => 15 [20] => [21] => [22] => [23] => 16 [24] => [25] => [26] => [27] => [28] => 0 [29] => [30] => [31] => [32] => [33] => 0 [34] => [35] => [36] => [37] => [38] => 0 [39] => [40] => [41] => [42] => [43] => [44] => 0 [45] => 20907 [46] => 143197 [47] => 57377 [48] => 27 [49] => 12 [50] => 51 [51] => 10 [52] => [53] => 7.33 [54] => [55] => 45.8 [56] => 17:07:31 )

値の間のスペースの数を無視して、各値を配列値としてphpに保存するにはどうすればよいですか?

4

3 に答える 3

1

要素間にスペースが 1 つだけあることを確認し、文字列の先頭または末尾に空白がないことを確認してから、文字列を分割します。

 $line = trim($line);
 $line = preg_replace('/\s\s+/', ' ', $line);
 $parts=explode(" ", $line)
于 2013-06-11T21:16:10.013 に答える
0

おそらく、複数のスペースが一緒に発生しています。

試す

 $parts = preg_split('/\s+/', $line);
于 2013-06-11T21:11:30.283 に答える
0

後で空の文字列を除外できますが、これを行う方が簡単です。

preg_split('/ +/',$string,-1, PREG_SPLIT_NO_EMPTY);
于 2013-06-11T21:13:57.280 に答える