$file = file_get_contents('file.txt');
$lines = explode('---> ', $file);
for($i=1; $i<count($lines); $i=$i+3)
if(strpos($lines[$i], '124')!==false)
$col[$i/3] = /*'--> ' . */$lines[$i];
print_r($col);
Кажется, это работает просто отлично. Рассказ приведенного выше комментария, если вы хотите, чтобы -> включенный в вывод. Кроме того, полученный массив $ COL индексируется с номером строки, который он найден. Просто замените [$ i/3] на [], если вы этого не хотите.
Продолжая это:
function SearchFileByColumn($contents, $col_num, $search, $col_count = 3) {
$segs = explode('---> ', $contents);
for($i=$col_num; $i<count($segs); $i=$i+$col_count)
if(strpos($segs[$i], $search) !== false)
$res[] = $segs[$i];
return $res;
}
$results = SearchFileByColumn($contents, 1, '124');