PHP - Lectura de archivos en php

 
Vista:

Lectura de archivos en php

Publicado por Luz Maria (1 intervención) el 26/06/2007 18:56:24
saludos, necesito ayuda con un proyecto en el que tengo que leer un archivo y extraer la informacion de los estudiantes de x facultad y manipularla.
ya se como leer un archivo en php linea por linea, pero tengo problemas con la funcion explode para fraccionar las lineas, al ejecutar el codigo php solo me muestra una gran cantidad de "2" y no el contenido de las variables que supuestamente se estan guardando.
Este es el código:
<?php

$archivo=fopen("2000-PRIMERO.txt", "r");

while (!feof($archivo)){
$linea=fgets($archivo, 1024);
$partes= explode(" ",$linea);/*fraccionar las partes de la linea*/

int $i=0

if (strcmp($partes[$i],"ESCUELA")==0){
$puntos=$partes[$i+1];
$cod_esc=$partes[$i+2];
if (strcmp($cod_esc,"04")==0){
$nom_esc=$partes[$i+3];
$periodo=$partes[$i+4];
}
}
echo $nom_esc;

if (strcmp($partes[$i],"CARRERA")==0){
$puntos=$partes[$i+1];
$cod_carrera=$partes[$i+2];
$nom_carrera=$partes[$i+3];
}
echo $nom_carrera;

if (strcmp($partes[$i],"ASIGNATURA")==0)){
$cod_asi=$partes[$i+1];
$num_asi=$partes[$i+2];
$nom_asi=$partes[$i+3];
}
echo $cod_asi;
echo $num_asi;
echo $nom_asi;

if (strcmp($partes[$i],"PROFESOR")==0){
$puntos=$partes[$i+1];
$cod_pro=$partes[$i+2];
$ape=$partes[$i+3];
$nom_pro=$partes[$i+4];
}
echo $cod_pro;
echo $ape;
echo $nom_pro;

int $conta=1;
settype($conta,'string'); /*convierte la variable entera conta en string*/
if (strcmp($partes[$i],$conta)==0){
$prov=$partes[$i+1];
$nacio=$partes[$i+2];
$tomo=$partes[$i+3];
$asiento=$partes[$i+4];
$nota=$partes[$i+5];
$cedula=$prov.$nacio.$tomo.$asiento;
settype($conta,'integer'); /*convertir conta en entera*/
}
$conta++;
echo $conta;
echo $cedula;
echo $nota;

$i++;

}

fclose($archivo);
?>
les agradeceria inmensamente su ayuda por favor, que ya no se que es lo que voy a hacer
gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Lectura de archivos en php

Publicado por César Penna (10 intervenciones) el 26/06/2007 19:16:39
<?php
//PROBA MEJOR CON LA FUNCION FILE QUE TE DEVUELVE UN ARRAY DONDE CADA INDICE ES UNA LINEA ES MAS FACIL Y MAS SEGURO
//FIJATE SI TE SIRVE ASI SINO MANDAME EL ARCHIVO PARA VER BIEN EN REALIDAD QUE ESTA HACIENDO EL CODIGO.
$archivo=file("2000-PRIMERO.txt");
$indice = 0;
while ($archivo[$indice] != ""){
$linea=$archivo[$indice];
$partes= explode(" ",$linea);/*fraccionar las partes de la linea*/

int $i=0

if (strcmp($partes[$i],"ESCUELA")==0){
$puntos=$partes[$i+1];
$cod_esc=$partes[$i+2];
if (strcmp($cod_esc,"04")==0){
$nom_esc=$partes[$i+3];
$periodo=$partes[$i+4];
}
}
echo $nom_esc;

if (strcmp($partes[$i],"CARRERA")==0){
$puntos=$partes[$i+1];
$cod_carrera=$partes[$i+2];
$nom_carrera=$partes[$i+3];
}
echo $nom_carrera;

if (strcmp($partes[$i],"ASIGNATURA")==0)){
$cod_asi=$partes[$i+1];
$num_asi=$partes[$i+2];
$nom_asi=$partes[$i+3];
}
echo $cod_asi;
echo $num_asi;
echo $nom_asi;

if (strcmp($partes[$i],"PROFESOR")==0){
$puntos=$partes[$i+1];
$cod_pro=$partes[$i+2];
$ape=$partes[$i+3];
$nom_pro=$partes[$i+4];
}
echo $cod_pro;
echo $ape;
echo $nom_pro;

int $conta=1;
settype($conta,'string'); /*convierte la variable entera conta en string*/
if (strcmp($partes[$i],$conta)==0){
$prov=$partes[$i+1];
$nacio=$partes[$i+2];
$tomo=$partes[$i+3];
$asiento=$partes[$i+4];
$nota=$partes[$i+5];
$cedula=$prov.$nacio.$tomo.$asiento;
settype($conta,'integer'); /*convertir conta en entera*/
}
$conta++;
echo $conta;
echo $cedula;
echo $nota;

$i++;
$indice++;
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lectura de archivos en php

Publicado por gabriel sanchez (1 intervención) el 05/01/2008 00:46:58
Luz Maria, buenas tardes!

Yo tengo una rutina similar, te comentaria que en primera:

Cuando haces el: $linea=fgets($archivo, 1024); le quites el 1024 y solo dejes el parametro del archivo.

Otro asunto, es que en mi caso cuando hago el explode yo utilizo "|" como separador de los campos. No se si en tu caso haya algun caracter que te pueda ayudar o servir para ese proposito.

Tambien seria muy bueno que hicieras una pequeña validacion a efecto de que el renglon que estes leyendo sea viable para hacer el explode.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar