Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中解析类似CSV的文件_Php_Csv_Parsing - Fatal编程技术网

在PHP中解析类似CSV的文件

在PHP中解析类似CSV的文件,php,csv,parsing,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 - 2

我有一个像这样的文本文件,我想修改它

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);

?>
试试这个:

$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);
$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> ";;
preg_match_all($re,str_replace(“;”,“-”,$str),$matches);
//打印整个匹配结果
回声';打印(匹配项);
试试这个:

$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);
$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> ";;
preg_match_all($re,str_replace(“;”,“-”,$str),$matches);
//打印整个匹配结果
回声';打印(匹配项);

如果您想将数据传输到表中,那么一个好的方法是通过
将字符串分解为
&
,然后通过
将每个元素分解为
使用
数组映射()

现在,您将拥有一个多维数据数组,可以将其传输到表中


下面是一个实例-

如果您想将数据传输到一个表中,那么一个很好的方法是通过
将字符串分解为
,然后通过
将每个元素分解为
使用
数组映射()

现在,您将拥有一个多维数据数组,可以将其传输到表中


下面是一个实例-

您的代码的当前输出或结果是什么?您的代码的当前输出或结果是什么?
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...