直接在数组中保存控制台应用程序输出

时间:2013-04-09 03:33:40

标签: php matlab console-application

我们如何对控制台应用程序的输出进行进一步的比较或计算。我认为它是ASCII形式。我在php中调用了控制台应用程序,它提供了大量的数字数据。我希望将数据保存在数组而不是txt文件中,因为读取和写入文件的过程需要时间我希望它直接将其保存在数组中。我使用了exec($ command,$ result)但我无法以正确的形式保存结果。我的输出如下所示:

    Columns 1 through 7

0.1373    0.0414    0.0541    0.1342    0.5606    0.5293    0.1652

 Columns 8 through 14

0.0341    0.0396    0.0633    0.0778    0.0289    0.0654    0.0752

Columns 15 through 21

0.3055    0.4602    0.0631    0.0360    0.0188    0.0497    0.0228...........

我不希望将列行保存在数组中,并且我希望列中的每个元素都保存在不同的数组索引中。例如,array [1] = 0.1373,array [2] = 0.414。

2 个答案:

答案 0 :(得分:1)

我的建议是一个简单的正则表达式,你在输出的每一行上运行:

if (preg_match_all('/\d+\.\d+/', $line, $matches)) {
    print_r($matches[0]);
}

如果表达式匹配,您将拥有一组可用于进一步处理的结果。与帖子匹配的第一行的输出:

Array
(
    [0] => 0.1373
    [1] => 0.0414
    [2] => 0.0541
    [3] => 0.1342
    [4] => 0.5606
    [5] => 0.5293
    [6] => 0.1652
)

答案 1 :(得分:0)

您可以使用[s,t] = system(...)捕获外部命令的输出。 第二个输出应该是文件中的字符串。 然后你可以解析字符串(例如使用regexp或str split utils)来提取你想要的数据。