在PHP中解析类似CSV的文件

时间:2016-12-15 13:03:32

标签: php csv parsing

我有一个文件,里面有这样的文字,我想修改它。

54.724498;25.340568;1262758;21;;14:51:42;A>B;1&54.70562;25.31099;1263367;21;;14:51:39;B>A;1&54.71681;25.305468;1262617;21;;14:51:33;A>B;1&54.68858;25.279688;1277721;20;;14:51:22;A>B;

我希望它显示为此

54.724498 - 25.340568 - 1262758 - 21 - 14:51:42 - A>B - 1
54.70562 - 25.31099 - 1263367 - 21 - 14:51:39 - B>A - 1

所以每次发现"&"标志,它跳到另一条线。如果将每个字符串添加到不同的数组中会很棒,因为我稍后会创建一个表。所以它应该是这样的 54.724498 - 数组a,25.340568 - 数组b,1262758 - 数组c等等... 我现在的代码是:

<?php

$data = "54.724498;25.340568;1262758;21;;14:51:42;A>B;1&54.70562;25.31099;1263367;21;;14:51:39;B>A;1&54.71681;25.305468;1262617;21;;14:51:33;A>B;1&54.68858;25.279688;1277721;20;;14:51:22;A>B;");
//var_dump($data);

$parts = explode(';', $data);

$array = array();

foreach($parts as $part) {
    array_push($array,$part);
}

print_r($array);

?>

2 个答案:

答案 0 :(得分:0)

试试这个:

$re = '/(.*)&(.*)/s';
$str = '54.724498;25.340568;1262758;21;;14:51:42;A>B;1&54.70562;25.31099;1263367;21;;14:51:39;B>A;1&54.71681;25.305468;1262617;21;;14:51:33;A>B;1&54.68858;25.279688;1277721;20;;14:51:22;A>B;';

preg_match_all($re, str_replace(';', ' - ', $str), $matches);

// Print the entire match result
echo '<pre>';print_r($matches);

答案 1 :(得分:0)

如果您想将数据传输到表格,那么一个好的方法可能是explode() &字符串explode()然后;每个元素array_map()使用{$data = "54.724498;25.340568;1262758;21;;14:51:42;A>B;1&54.70562;25.31099;1263367;21;;14:51:39;B>A;1&54.71681;25.305468;1262617;21;;14:51:33;A>B;1&54.68858;25.279688;1277721;20;;14:51:22;A>B;"; $array = explode('&', $data); $array = array_map(function($value){ return explode(';', $value); }, $array); print_r($array); 1}},

Array
(
    [0] => Array
        (
            [0] => 54.724498
            [1] => 25.340568
            [2] => 1262758
            [3] => 21
            [4] => 
            [5] => 14:51:42
            [6] => A>B
            [7] => 1
        )

    [1] => Array
        (

   ... etc...

现在,您将拥有一个可以转移到表的多维数据数组

.k-gantt-timeline .k-widget.k-tooltip {
display: none;
}

以下是一个实例 - http://sandbox.onlinephpfunctions.com/code/b9b4f0896b3fdda3da41797e9392d825bb044118