duanqian2278 2016-08-13 11:35
浏览 23
已采纳

解析一个文本文件并得到一个数组类型的数组(“(0:00)”=>“text1”,“(0:30)”=>“text2”)

I have a text file

(0:00)

text1

text2

(0:30)

text text text text text

..................

the result should be like this

array("(0:00)"=>"text1 text2","(0:30)"=>"text text text text text") 

my code

$key = array();
    $val = array();
    $out = array();
    $file = file('1.txt');
    foreach($file as $line) {
        $line = trim($line);
        if (preg_match("/(\d{0,2}:\d\d)/",$line,$match)){
            $key[]=$match;
        }else{
            $val[]=$match;
        }
        $out=array_merge($key,$val);
    }
    echo '<pre>';
    print_r($out);

tell me, how to fix it?

  • 写回答

3条回答 默认 最新

  • dphnn333971 2016-08-13 12:32
    关注
    $text = file_get_contents('1.txt');
    preg_match_all("~\(\d{1,2}:\d{1,2}\)~", $text, $keys);
    $values = array_values(preg_grep("~.+~", preg_split("~\(\d{1,2}:\d{1,2}\)~", $text)));
    $final = [];
    for ($n = 0; $n < count($keys[0]); $n++) {
        $final[$keys[0][$n]] = $values[$n];
    }
    print_r($final);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题