Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Numero de palabras en linea

Estas en el tema de Numero de palabras en linea en el foro de PHP en Foros del Web. Hola a todos :) tengo lo siguiente acabo de subir un archivo txt y lo leo para insertar su contenido en una tabla... todo bien ...
  #1 (permalink)  
Antiguo 05/08/2014, 18:43
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Numero de palabras en linea

Hola a todos :)
tengo lo siguiente acabo de subir un archivo txt y lo leo para insertar su contenido en una tabla... todo bien hasta aca solo tengo una duda como obtengo mi ultima "palabra" de cada línea es decir tengo por ejemplo lo siguiente...
111 ABC XYZ 90
111 AEC XRZ BYU 70
111 AXC 100

(necesito obtener mi número , no puedo hacerlo con $variable = trim($datos[POSICION]); ya que esta varia)


Código PHP:
$lineas =file($ruta);            
foreach (
$lineas as $linea_num => $linea)
{
    
$linea preg_replace('/\s+/'' '$linea);  
    
$datos explode(" ",$linea);
    
$unotrim($datos[0]);
    
$dostrim($datos[1]);
    
$tres trim($datos[2]);

ACA no sé como obtener mi ultima "palabra" es decir mi número

Desde ya gracias
  #2 (permalink)  
Antiguo 05/08/2014, 18:56
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Numero de palabras en linea

Si estás partiendo la cadena en palabras con explode, estás obteniendo un array, por tanto puedes obtener el último elemento con pop:

$datos = explode(" ",$linea);

$ultima=array_pop($datos);
  #3 (permalink)  
Antiguo 05/08/2014, 19:31
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Numero de palabras en linea

Código PHP:
Ver original
  1. $datos = end(explode(" ",$linea))
;
  #4 (permalink)  
Antiguo 06/08/2014, 09:41
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Cita:
Iniciado por ocp001a Ver Mensaje
Si estás partiendo la cadena en palabras con explode, estás obteniendo un array, por tanto puedes obtener el último elemento con pop:

$datos = explode(" ",$linea);

$ultima=array_pop($datos);


Amigo probe con esto pero $ultima queda vacia :(
  #5 (permalink)  
Antiguo 06/08/2014, 10:02
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Cita:
Iniciado por Patriarka Ver Mensaje
Código PHP:
Ver original
  1. $datos = end(explode(" ",$linea))
;
gracias amigo pero tampoco obtengo valor asi :(
  #6 (permalink)  
Antiguo 06/08/2014, 10:13
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Numero de palabras en linea

Sería bueno que nos muestres la manera en como has implementado las soluciones que mis compañeros te han proporcionado pues a simple vista, parece que son las adecuadas, en especial la de Patriarka.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 06/08/2014, 10:17
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Código PHP:
$lineas =file($ruta);             
foreach (
$lineas as $linea_num => $linea

    
$linea preg_replace('/\s+/'' '$linea);   
    
$datos explode(" ",$linea); 
    
$unotrim($datos[0]); 
    
$dostrim($datos[1]); 
    
$tres trim($datos[2]); 

echo 
"Final: ".$datos end(explode(" ",$linea));

Pero no arroja nada :(
  #8 (permalink)  
Antiguo 06/08/2014, 10:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Numero de palabras en linea

Para empezar, ¿te has dado cuenta de que en la siguiente línea no produces ningún cambio?

Código PHP:
Ver original
  1. $linea = preg_replace('/\s+/', ' ', $linea);

Es decir, buscas espacios en la cadena y los sustituyes con ¿espacios? , como que no tiene sentido hacer eso.

Otra forma de obtener la última palabra de una cadena es encontrando el último espacio en blanco en la misma y extrayendo la parte de la cadena que comprenda desde la siguiente posición del último espacio en blanco hasta el final:

Código PHP:
Ver original
  1. echo substr($linea, strrpos($linea, ' ') + 1);

Inténtalo así y nos dices cómo te fue.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 06/08/2014, 10:31
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Cita:
Iniciado por Alexis88 Ver Mensaje
Para empezar, ¿te has dado cuenta de que en la siguiente línea no produces ningún cambio?

Código PHP:
Ver original
  1. $linea = preg_replace('/\s+/', ' ', $linea);

Es decir, buscas espacios en la cadena y los sustituyes con ¿espacios? , como que no tiene sentido hacer eso.

Otra forma de obtener la última palabra de una cadena es encontrando el último espacio en blanco en la misma y extrayendo la parte de la cadena que comprenda desde la siguiente posición del último espacio en blanco hasta el final:

Código PHP:
Ver original
  1. echo substr($linea, strrpos($linea, ' ') + 1);

Inténtalo así y nos dices cómo te fue.

Saludos
No amigo lo que hago es sustituir un espacio doble por uno sencillo .... probe lo que me indicaste pero igual no arroja nada
  #10 (permalink)  
Antiguo 06/08/2014, 10:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Numero de palabras en linea

En realidad, ahí no sustituyes 'espacios dobles', esa expresión regular elimina los espacios existentes, sin distinguir si son dobles, triples o cuádruples. Con respecto a lo otro, me parece muy raro que de ninguna de las tres formas lo hayas podido hacer. Prueba haciendo esto para ver qué resulta, mientras tanto deja entre comentarios el resto del código.

Código PHP:
Ver original
  1. foreach ($lineas as $linea_num => $linea){
  2.     var_dump($linea);
  3. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 06/08/2014, 10:38
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Numero de palabras en linea

Si estas separando por espacios por que no pruebas con algo así.
Código PHP:
Ver original
  1. $datos = explode(' ',trim($linea)); // El trim se encargara de quitar el espacio primero y el final
  2. echo $datos[count($datos)-1];
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #12 (permalink)  
Antiguo 06/08/2014, 10:43
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Cita:
Iniciado por Alexis88 Ver Mensaje
Para empezar, ¿te has dado cuenta de que en la siguiente línea no produces ningún cambio?

Código PHP:
Ver original
  1. $linea = preg_replace('/\s+/', ' ', $linea);

Es decir, buscas espacios en la cadena y los sustituyes con ¿espacios? , como que no tiene sentido hacer eso.

Otra forma de obtener la última palabra de una cadena es encontrando el último espacio en blanco en la misma y extrayendo la parte de la cadena que comprenda desde la siguiente posición del último espacio en blanco hasta el final:

Código PHP:
Ver original
  1. echo substr($linea, strrpos($linea, ' ') + 1);


Inténtalo así y nos dices cómo te fue.

Saludos
ME ARROJO ESTO string(18) "3 ABC2 400.00 " string(23) "3 EDF906 ANA 700.00 " string(24) "3 RF0104 JUAN 200.00 "


TAMBIEN ALGO RARO CUANDO EN LO QUE ME INDICASTE
echo "Dos".$final2= substr($linea, strrpos($linea, ' aca pongo dos espacios') + 1);
ME ARROJO toda la informacion de mis lineas .....
  #13 (permalink)  
Antiguo 06/08/2014, 10:48
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Cita:
Iniciado por bookmaster Ver Mensaje
Si estas separando por espacios por que no pruebas con algo así.
Código PHP:
Ver original
  1. $datos = explode(' ',trim($linea)); // El trim se encargara de quitar el espacio primero y el final
  2. echo $datos[count($datos)-1];
Amigo gracias asi funciona :)
  #14 (permalink)  
Antiguo 06/08/2014, 10:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Numero de palabras en linea

Ya veo por qué no se muestra algo: El último espacio está al final de la cadena, por eso no toma nada de la misma. Vas a tener que quitar el espacio del final y luego aplicar lo que te dije.

Código PHP:
Ver original
  1. $linea = rtrim($linea);
  2. echo substr($linea, strrpos($linea, ' ') + 1);

Creo que debiste analizar bien lo que obtenías para implementar la solución.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #15 (permalink)  
Antiguo 06/08/2014, 10:51
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

GRACIAS A TODOS POR SU TIEMPO
Código PHP:
$datos explode(' ',trim($linea)); 
echo 
"FINAL".$datos[count($datos)-1]; 
  #16 (permalink)  
Antiguo 06/08/2014, 10:52
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Numero de palabras en linea

Cita:
Iniciado por Alexis88 Ver Mensaje
Ya veo por qué no se muestra algo: El último espacio está al final de la cadena, por eso no toma nada de la misma. Vas a tener que quitar el espacio del final y luego aplicar lo que te dije.

Código PHP:
Ver original
  1. $linea = rtrim($linea);
  2. echo substr($linea, strrpos($linea, ' ') + 1);

Creo que debiste analizar bien lo que obtenías para implementar la solución.

Saludos
Gracias amigo tienes razón el ultimo espacio .... ese era el detalle

Etiquetas: numero, palabras, tabla, variable
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 00:35.