我试着编写一个能够读取文本文件的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()函数来阅读,我很难转换成我想要的方式。
答案 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);
?>