Data File looks like (Random data made up): 3904832945209850 dvjswv09we0werf8208wf99dsf9s0d9f8s9g7h 3904832945209850 dvjswv09we0werf8208wf99dsf9s0d9f8s9g7h 3904832945209850 dvjswv09we0werf8208wf99dsf9s0d9f8s9g7h 3904832945209850 dvjswv09we0werf8208wf99dsf9s0d9f8s9g7h $v){ # $match .= '(.{'.$v.'})'; #} preg_match('/(.{'.implode('})(.{', array_values($def)).'})/', $data, $matches); return $matches; } $Breakup = array( 'RecordType' => 2, 'CDRId' => 12, 'AccountNumber' => 14, 'ServiceNumber' => 24, 'ServiceNumberType' => 6, 'TransactionDate' => 14, 'BillClass' => 6, 'ElementID' => 6, ); $data = file_get_contents('datfile.dat'); $lines = explode("\n", $data); foreach($lines as $line){ print_r(breakupline($Breakup, $line)); } ?>