Foros del Web » Programando para Internet » PHP »

ficheros y substrings

Estas en el tema de ficheros y substrings en el foro de PHP en Foros del Web. Buenas Noches. Estoy intentando de un fichero que tiene 30.000 líneas, obtener de cáda línea 30 caracteres que están detrás de la 9ª ';', es ...
  #1 (permalink)  
Antiguo 20/12/2011, 17:38
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
ficheros y substrings

Buenas Noches.
Estoy intentando de un fichero que tiene 30.000 líneas, obtener de cáda línea 30 caracteres que están detrás de la 9ª ';', es decir, tras 9 puntos y comas está mi información.
estoy usando:
Código PHP:
Ver original
  1. $linea = strpos($line ,';');
  2.     echo substr(strip_tags($line), $linea, 50);
pero claro, eso me da a partir del primer punto y coma. Como puedo hacer para que sea a partir del 9º?
  #2 (permalink)  
Antiguo 20/12/2011, 21:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ficheros y substrings

A partir del noveno ";" es complicado de especificar sin expresiones regulares, sin embargo puedes usar explode() para partir la linea en un array y de ahí obtener el índice que buscas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/12/2011, 21:39
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ficheros y substrings

Al final decidí hacerlo a la aventura. Copio el código que quizás a alguien le sea útil en algún futuro =)
$Fichero = file("fichero.txt"); //Open the file
foreach ($Fichero as $i => $line){ //For each row read.....
Código PHP:
Ver original
  1. preg_match_all('/;/', $line, $Results, PREG_OFFSET_CAPTURE); //looking for ; contained in $line. This array is kept in $Results
  2.     //print_r($Results);
  3.     foreach($Results as $position){
  4.         $position[0] = $position[2][1]+1; //This is the start position for the date
  5.         $position[1] = $position[3][1]; //This is the end position for the date
  6.         $position[2] = $position[8][1]+1; //This is the position in which the balls start
  7.         $position[3] = $position[9][1]; //This is the position in which the balls ends
  8.         $position[4] = $position[10][1]+1; //This is the position in which the reintegro start
  9.         break;
  10.     }  
  11.     $size_date=$position[1]-$position[0]; //Max date size that we are going to substring
  12.     $size_balls=$position[3]-$position[2];  //Max balls size that we are going to substring
  13.     echo substr(strip_tags($line), $position[0], $size_date);
  14.     echo " ";
  15.     echo substr(strip_tags($line), $position[2], $size_balls);
  16.     echo " ";
  17.     echo substr(strip_tags($line), $position[4], 1);
  18.     echo '</br>';
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:37.