Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Alguien.. como devolver 3 ultimas palabras de una cadena.?

Estas en el tema de Alguien.. como devolver 3 ultimas palabras de una cadena.? en el foro de PHP en Foros del Web. Hola... a todos! Alguien puede decirme como hacer esto.. Tengo una cadena con 5 guiones dentro. Código PHP: $cadena  =  "niño-pepe-lucho DIOS - TESALVE - MARIA" ;  Limpiar todos los ...
  #1 (permalink)  
Antiguo 02/07/2015, 15:52
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 10 años, 1 mes
Puntos: 3
Alguien.. como devolver 3 ultimas palabras de una cadena.?

Hola... a todos!

Alguien puede decirme como hacer esto..

Tengo una cadena con 5 guiones dentro.


Código PHP:
$cadena "niño-pepe-lucho DIOS - TESALVE - MARIA"
Limpiar todos los caracteres "-", buscando a partir del segundo "-" encontrado del último hacia adelante..


Código PHP:
$cadena_new =  "niñopepelucho DIOS - TESALVE - MARIA"
Gracias de antemano!
  #2 (permalink)  
Antiguo 02/07/2015, 16:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Alguien.. como devolver 3 ultimas palabras de una cadena.?

seria algo como
Código PHP:
Ver original
  1. list($a, $b, $c, $d, $e) = explode("-", $cadena);
poar ahi va la cosa
  #3 (permalink)  
Antiguo 02/07/2015, 16:39
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Alguien.. como devolver 3 ultimas palabras de una cadena.?

esto tambien te serviria, digo si es lo que buscas:
Código PHP:
Ver original
  1. $cadena = "niño-pepe-lucho-DIOS-TESALVE-MARIA";
  2.  
  3.     list($a, $b, $c, $d, $e, $f) = explode("-", $cadena);
  4.    
  5.     $array = array($a.$b.$c, $d, $e, $f);
  6.    
  7.     $nuevacadena = implode("-", $array);
este da como resultado, exactamente lo que escribiste
  #4 (permalink)  
Antiguo 02/07/2015, 17:14
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años
Puntos: 10
Respuesta: Alguien.. como devolver 3 ultimas palabras de una cadena.?

o si quieres con expresiones regulares :
Código PHP:
Ver original
  1. $cadena = "niño-pepe-lucho - DIOS - TESALVE - MARIA";
  2. $cadena = preg_replace('/-/', ' ', $cadena); //reemplaza los guiones con un espacio
  3. $cadena = preg_replace('/\s\s+/', ' ', $cadena);//deja solo un espacio entre las palabras
  4. preg_match('/(([^ ]*)\s+([^ ]*)\s+([^ ]*))$/', $cadena,$resultado );//busca las ultimas tres palabras
  5. echo $resultado[0]; //el resultado seria :  DIOS TESALVE MARIA

Esto funciona incluso si no todas las palabras tienen guiones entre si, como pusiste al principio (por error creo)
Cita:
Tengo una cadena con 5 guiones dentro.
$cadena = "niño-pepe-lucho DIOS - TESALVE - MARIA";
pero solo hay cuatro guiones.
Como dije funciona con cualquier combinacion de guiones (1,2,3... etc )

Última edición por matake; 02/07/2015 a las 17:45
  #5 (permalink)  
Antiguo 03/07/2015, 09:39
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Alguien.. como devolver 3 ultimas palabras de una cadena.?

Uhm..

Creo que me han entendido mal.

Yo tengo una cadena con 4 guiónes.
Código PHP:
$cadena "niño-pepe-lucho DIOS - TESALVE - MARIA"
Y lo que quiero es solo una cadena.. pero con los 2 últimos guiones.

Código PHP:
$cadena_new =  "niñopepelucho DIOS - TESALVE - MARIA"
Es decir contando desde el final hacia atrás, al encontrar el segundo guión;
entonces los demás guiones reemplazarlo por "".
Eso lo hago por que solo necesito limpiarlo los guiones anteriores para obtener una dirección y sus respectivos UBIGEOS.

Saludos..
  #6 (permalink)  
Antiguo 03/07/2015, 09:49
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Alguien.. como devolver 3 ultimas palabras de una cadena.?

Tengo una función..que me da la posición de un guión de una cadena. Contando de atrás hacia adelante.

Código PHP:
function strrpos_count($haystack$needle$count)
        {
            if(
$count <= 0)
                return 
false;

            
$len strlen($haystack);
            
$pos $len;

            for(
$i 0$i $count && $pos$i++)
                
$pos strrpos($haystack$needle$pos $len 1);

            return 
$pos;
        }
      
      
$direccion="AV. GIUSEPPE GARIBALDI NRO. 396  382-386-398,AV SN. FELIPE 628-630 Y 640  LIMA - LIMA - JESUS MARIA";

      
$pos=strrpos_count($direccion,"-",3);//OBTENGO 62... que es la posición del guión de la cadena "628-630"

     //SI ME DEVUELVE UNA POSICIÓN,SI EXISTE UN TERCER GUION

      
if ($pos) {
                  
//REEMPLAO EL TERCER GUION POR UNA COMA.
                  
$direccion substr_replace($direccion,",",$pos,1);
       }
       echo 
$direccion
RESULTADO:
Código HTML:
AV. GIUSEPPE GARIBALDI NRO. 396  382-386-398,AV SN. FELIPE 628,630 Y 640  LIMA - LIMA - JESUS MARIA;
Pero lo que se desea no es solo reemplazar el tercer GUIÓN encontrado por una COMA, sino todas las anteriores.

Y generar algo como:
Código HTML:
AV. GIUSEPPE GARIBALDI NRO. 396  382,386,398,AV SN. FELIPE 628,630 Y 640  LIMA - LIMA - JESUS MARIA;
Espero que sea más claro, esta vez.
  #7 (permalink)  
Antiguo 03/07/2015, 10:33
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Alguien.. como devolver 3 ultimas palabras de una cadena.?

Ya lo resolvi :)

Usando la función anterior, busque la posición del segundo guión contando de atrás hacia adelante;
y a partir de ahí separe la cadena en dos.

La primera cadena, que tiene los guiones que deseo limpiar simplemente lo remplazo por una coma;
luego de eso vuelvo a unir las cadenas..



Código PHP:
$pos=strrpos_count($direccion,"-",2);

 if (
$pos) {                      
                
//SEPARAMOS LA DIRECCION EN 2 PARTES a PARTIR DEL 2 Guión contado desde atrás
                
$str1 substr($direccion0$pos);
                
$str2 substr($direccion$pos);

                
//La primera parte de la cadena, reemplazamos todos los guiones por una coma.
                
$str1 str_replace('-'','$str1);
                
//$str1= String2Replace($str1);

                
$direccion=$str1.$str2;
 } 


Etiquetas: Ninguno
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 02:23.