Foros del Web » Programando para Internet » PHP »

Problema con str_replace

Estas en el tema de Problema con str_replace en el foro de PHP en Foros del Web. Hola, estoy teniendo un problema al utilizar el str_replace tengo este código $url = '22-lalala-1'; $numero = end(explode('-', $url)); $palabra1 = str_replace($numero,'',$url); $numero da como ...
  #1 (permalink)  
Antiguo 29/09/2012, 11:35
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Problema con str_replace

Hola, estoy teniendo un problema al utilizar el str_replace

tengo este código

$url = '22-lalala-1'; $numero = end(explode('-', $url)); $palabra1 = str_replace($numero,'',$url);

$numero da como resultado 1

$palabra1 debería de dar como resultado 22-lalala

El problema que tengo es que me da como resultado -lalala

¿Cómo corrijo esto?

Gracias de antemano y saludos!
  #2 (permalink)  
Antiguo 29/09/2012, 12:24
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con str_replace

Código PHP:
Ver original
  1. <?php
  2. $url = '22-lalala-1'; $numero = end(explode('-', $url)); $palabra1 = str_replace($numero,'',$url);
  3. echo $palabra1;
  4. ?>

Como resultado da 22-lalala-
  #3 (permalink)  
Antiguo 29/09/2012, 12:43
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con str_replace

Cita:
Iniciado por marcofbb Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. $url = '22-lalala-1'; $numero = end(explode('-', $url)); $palabra1 = str_replace($numero,'',$url);
  3. echo $palabra1;
  4. ?>

Como resultado da 22-lalala-
Que raro al hacer esto:

Cuando uso 22-lalala-1 si da pero cuando uso 11-lalala-1 no. No entiendo porque al ser 11 no funciona pero cuando es 22 si O_O

Última edición por Knime; 29/09/2012 a las 13:01
  #4 (permalink)  
Antiguo 29/09/2012, 13:51
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con str_replace

Cita:
Iniciado por Knime Ver Mensaje
Que raro al hacer esto:

Cuando uso 22-lalala-1 si da pero cuando uso 11-lalala-1 no. No entiendo porque al ser 11 no funciona pero cuando es 22 si O_O
Simple lógica, usted puse a remplazar los 1 por '' (Nada), entonces te remplaza todos los 1 de la cadena

¿Como puedo arreglar esto?
La mejor forma es con preg_remplace, es decir utilizando un patrón para remplazar siempre en la parte que quieres.

¿Otra forma?
Otra forma es la siguiente

Código PHP:
Ver original
  1. $texto = '11-lalala-1';
  2. $termino = explode('-',$texto);
  3. $texto = $termino[0].'-'.$termino[1];
  4. $ultimon = $termino[3];
  5. echo $texto; //11-lalala

Si no siempre es el mismo numero de "-" Guion medio, vas a tener que utilizar la funcion "count()" combinada con unset(); y hacer un foreach para recorrer el array.

Para darte algo mas optimo, me gustaría que especifiques para que necesitas hacer esto

Saludos

Última edición por marcofbb; 29/09/2012 a las 13:57
  #5 (permalink)  
Antiguo 29/09/2012, 18:56
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con str_replace

Cita:
Iniciado por marcofbb Ver Mensaje
Simple lógica, usted puse a remplazar los 1 por '' (Nada), entonces te remplaza todos los 1 de la cadena

¿Como puedo arreglar esto?
La mejor forma es con preg_remplace, es decir utilizando un patrón para remplazar siempre en la parte que quieres.

¿Otra forma?
Otra forma es la siguiente

Código PHP:
Ver original
  1. $texto = '11-lalala-1';
  2. $termino = explode('-',$texto);
  3. $texto = $termino[0].'-'.$termino[1];
  4. $ultimon = $termino[3];
  5. echo $texto; //11-lalala

Si no siempre es el mismo numero de "-" Guion medio, vas a tener que utilizar la funcion "count()" combinada con unset(); y hacer un foreach para recorrer el array.

Para darte algo mas optimo, me gustaría que especifiques para que necesitas hacer esto

Saludos
Bueno, esto me ha ayudado y gracias, lo necesito para simplemente aumentarle +1 a unas urls...
el problema bien es que defines por defecto 3 hay veces que tienen hasta 6
lalala-1-lalala-lalala-la-12 por ejemplo, pero me topo con que específicamente con 11-lalala-1 me da el problema.
  #6 (permalink)  
Antiguo 29/09/2012, 19:39
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con str_replace

Cita:
Iniciado por Knime Ver Mensaje
Bueno, esto me ha ayudado y gracias, lo necesito para simplemente aumentarle +1 a unas urls...
el problema bien es que defines por defecto 3 hay veces que tienen hasta 6
lalala-1-lalala-lalala-la-12 por ejemplo, pero me topo con que específicamente con 11-lalala-1 me da el problema.
Lee la solución del foreach que te di, es justo lo que buscas

Saludos
  #7 (permalink)  
Antiguo 29/09/2012, 20:45
 
Fecha de Ingreso: julio-2011
Mensajes: 25
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problema con str_replace

Cita:
Iniciado por marcofbb Ver Mensaje
Lee la solución del foreach que te di, es justo lo que buscas

Saludos
Me podrías decir como quedaría? :S

Gracias por la ayuda que me has dado :D
  #8 (permalink)  
Antiguo 29/09/2012, 20:55
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con str_replace

Lo que tendrías que haber hecho es buscar en google todas las funciones que te dice y asociarlas, en vez de pedir la solución, en código, porque si no no aprendes nada.

Código PHP:
Ver original
  1. <?php
  2. $texto = '11-lalala-1';
  3. $termino = explode('-',$texto);
  4. $i = count($termino);
  5. $i--;
  6. $ui = $termino[$i];
  7. unset($termino[$i]);
  8. $data = "";
  9. $n=1;
  10. foreach($termino as $k){
  11.     if($n == 1){
  12.         $data.= "{$k}";
  13.     } else {
  14.         $data.= "-{$k}";
  15.     }
  16. $n++;
  17. }
  18. $ui++;
  19. echo $data."-".$ui; //11-lalala-2
  20. ?>

Etiquetas: implementar, imposible, str_replace
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:52.