在php中将文本文件转换为多维数组

时间:2015-09-13 01:11:16

标签: php arrays file multidimensional-array

我试着编写一个能够读取文本文件的PHP代码,将其转换为多维数组 我的文字如下:

Random Header 1
1. List item 1
2. List item 2
3. List item 3
...........
...........

Random Header Title 2
1. List item 1
2. List item 2
3. List item 3
...........
...........
and the random header and lists 

现在,我想将上面的文本转换为看起来的数组,

Array
(
    [Random Header 1] => Array
        (
           [0] => "1. List item 1",
           [1] => "2. List item 2",
           [2] => "3. List item 3"
     ),
     [Random Header Title 2] => Array
        (
           [0] => "1. List item 1",
           [1] => "2. List item 2",
           [2] => "3. List item 3"
     )
)

请注意,标题以字符串开头,列表项以数字开头 我使用php的file()函数来阅读,我很难转换成我想要的方式。

1 个答案:

答案 0 :(得分:1)

这应该适合你:

只需使用file(),然后循环显示每一行,如果该行的第一个字符是非数字字符\D - > {,请与preg_match()核对。 {1}})。如果是,则在开始时使用非数字字符到达下一行之前将其用作键。

[^0-9]

输出:

<?php

    $lines = file("text.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $arr = [];
    $header = FALSE;

    foreach($lines as $line){
        if(preg_match("/^\D/", $line))
            $header = $line;
        if($header != $line)
            $arr[$header][] = $line;
    }

    print_r($arr);

?>