Bueno, no entendí muy bien la última parte del problema, de todas formas yo tuve una situación parecida (recuperar partes especificas de un archivo de texto), he adaptado un poco el código que empleé para solucionar esto y creo que funcionara en este caso, al menos en parte.
Código PHP:
Ver original<?php
$ar= fopen("ejemplo.txt", "r"); //Se abre el archivo en modo de solo lectura. $datosRecuperados= array(); //En este array guardaremos los datos. $contador= 0; //Es para llevar el número de linea que estamos procesando.
$existeEC; //Esta variable se modificara de acuerdo a la presencia o ausencia de 'E/C'.
while(!feof($ar)) //El bucle while se repetira hasta llegar al final del archivo. {
$lineaActual= fgets($ar); //Con fgets() leemos una por una las lineas del archivo pasado por parametro. $contador++;
if($contador>=21 && (($contador-1)%4)==0) //Para verificar que se trata de una linea en la que debemos buscar 'E/C'.
{
$pos= strpos($lineaActual, "E/C"); //Se busca la posición de 'E/C'.
if($pos==27) //Si 'E/C' se halla en la posición adecuada o no.
$existeEC= true;
else
$existeEC= false;
}
if($existeEC && $contador>=23 && (($contador+1)%4)==0) //Se evalua comprueba la presencia de 'E/C' asi como que se trata una linea de la cual de bemos extraer los datos.
{
$datosRecuperados[]= substr($lineaActual, 138, 6); //Se guardan los datos en el array. }
}
fclose($ar); //Se cierra el archivo de texto.
foreach($datosRecuperados as $dato) //Con esto se recorre el array y se imprimen los datos recuperados.
echo $dato."<br>";
?>
Quiero agregar que se podria detener las iteraciones del bucle while añadiendo algo como esto:
Código PHP:
Ver original$lineaMaxima= 250;
if($contador>=$lineaMaxima)
break;
De esta manera la busqueda se realizaria hasta un limite dado.