繁体   English   中英

PHP:将文件读入数组

[英]PHP: Read file into array

我有一个大型(〜5MB)文本文件,其内容类似于以下内容:

> -L"FIR ANTANANARIVO"
55.5000001034   -19.0053549236
55.5000001034   -10.0053549152
55.5000001034   -19.0053549236
> -L"FIR ANTOFAGASTA"
-69.76998889    -17.96612222
-69.95860556    -18.24945
-80.2033334761  -18.35000067
> -L"FIR ASHGABAT"
61.3850333  38.655
60.2866333  39.8950333
56.4517 40.055

数据被缩短为三行,以提高可读性。 每个数据集可以超过200行。

使用\\> -L\\".*\\"作为匹配字符串只会返回整行,而不是仅包含引号的部分。

所需的输出数组:

Array
(
    [0] => Array
        (
            [0] => FIR ANTANANARIVO
            [1] => 55.5000001034    -19.0053549236
            [2] => 55.5000001034    -10.0053549152
            [3] => 55.5000001034    -19.0053549236
        )
    [1] => Array
        (
            [0] => FIR ANTOFAGASTA
            [1] => -69.76998889 -17.96612222
            [2] => -69.95860556 -18.24945
            [3] => -80.2033334761   -18.35000067
        )
    [2] => Array
        (
            [0] => FIR ASHGABAT
            [1] => 61.3850333   38.655
            [2] => 60.2866333   39.8950333
            [3] => 56.4517  40.055
        )
)

这是我当前正在使用的代码:

$firs = file_get_contents('data/firs.txt');
preg_match_all("/^\> -L\".*\"?(?=\n\>|\z)", $firs, $treffer);
print_r($treffer);

返回整行而不是仅用引号引起来

您可能会忘记对其进行分组。 从索引1的匹配组中获取它。

\> -L\"(.*)\"

在线演示


尝试使用正面后向正面前瞻 在这种情况下,无需从团体中捕获它。

(?<=\> -L\").*(?=\")

在线演示


从索引1获取匹配组中的所有所需值。

 ((?<=\> -L\").*(?=\")|^-?\d.*$)

在线演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM