Foros del Web » Programando para Internet » PHP »

Conocer el final de un linea

Estas en el tema de Conocer el final de un linea en el foro de PHP en Foros del Web. Muy buenas a todos, me estoy metiendo en el mundo de los ficheros en php y me gustaría saber como puedo ir contando caracteres, conocer ...
  #1 (permalink)  
Antiguo 26/03/2010, 05:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 147
Antigüedad: 15 años, 8 meses
Puntos: 1
Pregunta Conocer el final de un linea

Muy buenas a todos, me estoy metiendo en el mundo de los ficheros en php y me gustaría saber como puedo ir contando caracteres, conocer cuando he lleguedao al final de una linea ...
de momento tengo esto que me imprime el contenido del fichero
Código PHP:

            $fichero
fopen("files/".$name,"r");
            while (!
feof($fichero))
            {
                
$datos=fgets($fichero);
                echo 
$datos."<br>";
            } 
y me gustaría por ejemplo contar lineas pero no se muy bien como hacerlo, por ejemplo he intentado

Código PHP:
if($datos)
{
$cont++;

Pero no me cuenta bien las lineas (estas ultimas 3 lineas dentro del while anterior)
muchas gracias por cualquier tipo de ayuda.
  #2 (permalink)  
Antiguo 26/03/2010, 06:09
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Conocer el final de un linea

Código PHP:
$ficherofopen("files/".$name,"r");
            while (!
feof($fichero))
            {
                
$datos=fgets($fichero);
                
$cont++;
                echo 
$datos."<br>";
            } 
  #3 (permalink)  
Antiguo 26/03/2010, 06:09
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 7 meses
Puntos: 26
Primero inicializa tu contador a 0.
Segundo, en el fgets comprueba que no te devuelva false, porque si es asi no contara como linea.
Tercero y último acuerdate de cerrar el fichero.

Te diria como se hace, pero primero intentalo tu mismo, ya veras como te sale, y si no dilo.

Cita:
Iniciado por Eleazan Ver Mensaje
Código PHP:
$ficherofopen("files/".$name,"r");
            while (!
feof($fichero))
            {
               if(
$datos=fgets($fichero)){
                    
$cont++;
                    echo 
$datos."<br>";
                }
            } 
Solo para optimizar el codigo

Última edición por GatorV; 26/03/2010 a las 09:22
  #4 (permalink)  
Antiguo 26/03/2010, 06:15
 
Fecha de Ingreso: febrero-2009
Mensajes: 147
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Conocer el final de un linea

Gracias por las respuestas, contar lineas ya lo he conseguido, estaba contando yo mal los espacios en blanco.... (Lo siento)

Código PHP:
$ficherofopen("files/".$name,"r");
            while (!
feof($fichero))
            {
                
$datos=fgets($fichero);
                if(
$datos)
                {
                                         
$i=0;
                     while(
$datos[$i]!='\0')
                    {
                        echo 
$datos[$i]."<br>";
                        
$i++;
                        
                    }
                              }
                       } 
Esto se me que en un bucle infinito, me escribe bien letra por letra el contenido de datos
pero no pasa a la siguente linea porque no sale del buchel while($datos[$i]!='\0'), esto lo conozco de C por lo que pense que tambien funcionaría, como puedo determinar el fin.
Gracias de antemano

Editado:
si utilizo la funcion strlen($cadena) me lo hace bien, me gustaria saber cual es el caracter escape que determina que la cadena ha llegado a su fin
  #5 (permalink)  
Antiguo 26/03/2010, 06:21
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 7 meses
Puntos: 26
Respuesta: Conocer el final de un linea

fgets() te devuelve un string, en el while tu pones $datos[$i], y eso es para arrays.
Puede que ahí esté el problema. Convierte $datos a array y nos dices algo.

Etiquetas: conocer, final, linea
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 09:10.