Foros del Web » Programando para Internet » PHP »

capturar datos de un txt con php

Estas en el tema de capturar datos de un txt con php en el foro de PHP en Foros del Web. Buenas noches a todos, espero que me puedan ayudar con esto la idea es la siguiente, subir un archivo.txt y con php capturar ciertos datos, ...
  #1 (permalink)  
Antiguo 07/09/2010, 19:07
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
capturar datos de un txt con php

Buenas noches a todos, espero que me puedan ayudar con esto

la idea es la siguiente, subir un archivo.txt y con php capturar ciertos datos, por ejemplo

el archivo.txt contiene:
___________________________________
portada

( Instituciones: pendiente)

( Subseccion 1 "asignacion1" autor1 "nombre autor1" )

( Subseccion 2 "asignacion2" autor2 "nombre autor2" )

( Subseccion 3 "asignacion3" autor3 "nombre autor3" )
____________________________________

y quisiera capturar "asignacion1 y "nombre autor1" asi con 2 y 3.



desde ya muchas gracias por sus comentarios

saludos a todos
  #2 (permalink)  
Antiguo 07/09/2010, 19:28
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 13 años, 9 meses
Puntos: 27
Respuesta: capturar datos de un txt con php

Tienes que usar expresiones regulares. Te podría poner la que debes usar para el caso que dices en específico, pero me parece que no te serviría de nada porque en cuanto la aplicación cambie la expresión tiene que cambiar también.

Lo mejor sería que leyeses la documentación e hicieses algunos ejemplos antes de la función
preg_match()
  #3 (permalink)  
Antiguo 07/09/2010, 19:40
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: capturar datos de un txt con php

Gracias perryjr por tu respuesta!


Saludos
  #4 (permalink)  
Antiguo 07/09/2010, 22:23
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: capturar datos de un txt con php

TomMcCoffee
No se si te ayude de algo pero si por ejemplo tu sabes como vendra el formato del archivo de texto puedes hacer algo mas simple. Por ejemplo si en tu archivo de texto viniera:

Subseccion 1/asignacion1/autor1/nombre autor1
Subseccion 2/asignacion2/autor2/nombre autor2

y eso lo capturas en un bucle while por linea podrias hacer algo asi como
$linea = "Subseccion 1/asignacion1/autor1/nombre autor1";// el string que sacaste del archivo

//Esto te divide el string en 4 partes divididas por el '/' y te lo guarda en el array datos, entonces para acceder a asignacion1 y nombre1 solo tendrias que hacer $datos[1] y $datos[3]
$datos= explode('/',$linea);

Ojala te sirva de algo.
Saludos
  #5 (permalink)  
Antiguo 09/09/2010, 11:36
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: capturar datos de un txt con php

Cita:
Iniciado por tattansp Ver Mensaje
TomMcCoffee
No se si te ayude de algo pero si por ejemplo tu sabes como vendra el formato del archivo de texto puedes hacer algo mas simple. Por ejemplo si en tu archivo de texto viniera:

Subseccion 1/asignacion1/autor1/nombre autor1
Subseccion 2/asignacion2/autor2/nombre autor2

y eso lo capturas en un bucle while por linea podrias hacer algo asi como
$linea = "Subseccion 1/asignacion1/autor1/nombre autor1";// el string que sacaste del archivo

//Esto te divide el string en 4 partes divididas por el '/' y te lo guarda en el array datos, entonces para acceder a asignacion1 y nombre1 solo tendrias que hacer $datos[1] y $datos[3]
$datos= explode('/',$linea);

Ojala te sirva de algo.
Saludos

Gracias tattansp, segui la documentacion y tanmien tu idea, solo que para el comienzo de la linea hay un parentesis, entonces lo que he hecho es capturar la posicion, a modo de ejemplo aca va lo que hice, tal vez a alguien mas le sirva ;)

while (!feof($fp)) {
$line = fgets ($fp, 100);
$line1 = str_replace('"', '', $line);
$pieces = explode(" ", $line1);
$subseccion = trim($pieces[2]);

if ($pieces[1] == "Subseccion") { //Subseccion -->position 2 de la linea

break;
}
}

el str_replace lo he puesto para eliminar las comillas y asi tener mi string limpio

saludos a todos !! :D
  #6 (permalink)  
Antiguo 13/11/2012, 04:50
 
Fecha de Ingreso: noviembre-2012
Mensajes: 1
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: capturar datos de un txt con php

Hola me gustaria que me ayudaran con este tema Tengo que realizar un programa que capture un txt que contenga correos uno debajo de otro y los suba auna base de datos


el txt es este:

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]


el programa hasta ahora es este:

<?php
$ar= fopen("correos.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>";

?>

Etiquetas: txt
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 12:58.