Foros del Web » Programando para Internet » PHP »

Problemas con str_replace

Estas en el tema de Problemas con str_replace en el foro de PHP en Foros del Web. Os cuento tengo una variable donde guardo una serie de parametros Código PHP: $parametros  = Array( "-" , "." , ":" );  Y otra una serie ...
  #1 (permalink)  
Antiguo 04/10/2011, 08:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años, 6 meses
Puntos: 8
Problemas con str_replace

Os cuento tengo una variable donde guardo una serie de parametros

Código PHP:
$parametros = Array("-",".",":"); 
Y otra una serie de nombres:

Código PHP:
$var = array("Lea Thompson""Joe Penny""William R. Moses"); 
Teniendo en cuenta esas dos variables yo tengo este foreach:

Código PHP:
foreach ($var as $datos){
//echo $datos;
    
foreach($parametros as $caracter){
        
$wordClean[$i]=str_replace($caracter""$datos);
    }
$i++;
}
print_r($wordClean); 
En este caso "William R. Moses" no deberia tener el punto (William R Moses) y realizando un echo de str_replace($caracter, "", $datos); me realiza los cambios pero toma como valor la ultima comparacion, con lo que no lo cambia.

Mi pregunta es ¿hay manera de identificar cuando realiza un cambio y cuando no? De manera que cuando note que hay un cambio lo guarde en la variable y cuando no que no lo guarde.

Saludos y gracias!
  #2 (permalink)  
Antiguo 04/10/2011, 08:34
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

Ajam, ¿y el $i que valor toma en la primera vuelta del foreach interno? :p
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 04/10/2011, 08:38
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Problemas con str_replace

Cita:
Iniciado por h2swider Ver Mensaje
Ajam, ¿y el $i que valor toma en la primera vuelta del foreach interno? :p
No puesto que yo quiero que la variable donde guardo los datos tenga los mismo datos de la de acceso, es decir si ($var = array("Lea Thompson", "Joe Penny", "William R. Moses"); ) tiene un tamaño de 3, $wordClean lo mismo... con la diferencia del reemplazo.
  #4 (permalink)  
Antiguo 04/10/2011, 08:42
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

A lo que voy es que te falta definir $i para la primera vuelta, $i es un contador, debes darle un valor inicial antes de empezar a sumar en él.

Y si usas preg_replace?, intenta algo así

Código PHP:
<?php

$var 
= array("Lea Thompson""Joe Penny""William R. Moses");

foreach (
$var as $datos) {
    
$wordClean[] = preg_replace('/[-:\.]/'''$datos);
}
print_r($wordClean);
?>
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 04/10/2011, 08:55
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Problemas con str_replace

Si aunque no la tengo puesta aquí, la variable esta definida e inicializada a 0.
  #6 (permalink)  
Antiguo 04/10/2011, 09:00
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

Te sirvió el 'algorismo' que te pase arriba?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 04/10/2011, 09:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problemas con str_replace

¿Algorismo?

¿Tiene algo que ver con Al Gore?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 04/10/2011, 09:04
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Algorismo?

¿Tiene algo que ver con Al Gore?
De lo mismo me rio yo, por eso el link :p
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #9 (permalink)  
Antiguo 04/10/2011, 09:06
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Problemas con str_replace

El problema que tienes con ese código, es, que para cada carácter que quieres cambiar, lo cambias en el "origen" ($datos), y lo guardas en el "destino" ($wordClean). y vuelves a repetir para la misma palabra.... obteniendo el mismo origen ($datos) (q es la palabra SIN el primer cambio) y la guardas en el destino ($wordClean).

Para solucionar eso, podrías hacer algo así
Código PHP:
foreach ($var as $datos){
$wordClean[$i] = $datos;
    foreach(
$parametros as $caracter){
        
$wordClean[$i]=str_replace($caracter""$wordClean[$i]);
    }
$i++;
}
print_r($wordClean); 
Con esto, solucionarías la lógica del trozo de código q has puesto. Igualmente, es mejor solución la que te ha dado h2swinder.

Otra opción posible, sería esta:
Código PHP:
foreach ($var as $datos){
    
$wordClean[$i]=str_replace($parametros""$datos);
    
$i++;
}
print_r($wordClean); 
Ya que str_replace te permite pasar un array como search, y te cambiará esos carácteres! ;)

Un saludo :)
__________________
>> Eleazan's Source
>> @Eleazan
  #10 (permalink)  
Antiguo 04/10/2011, 09:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

Cita:
Iniciado por Eleazan Ver Mensaje
Ya que str_replace te permite pasar un array como search, y te cambiará esos caracteres! ;)
Un saludo :)
Muy interesante, no lo conocía, pero no estoy de acuerdo con

Código PHP:
$wordClean[$i]=str_replace($parametros""$datos);
    
$i++; 
Ese $i está de más, creo que la mejor opción seria.

Código PHP:
$wordClean[]=str_replace($parametros""$datos); 
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #11 (permalink)  
Antiguo 04/10/2011, 09:18
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Problemas con str_replace

Perfecto gracias a todos, h2swider tu codigo me daba los mismos errores, aun asi gracias!!

El codigo de Eleazan va perfecto, es justo lo que queria plasmar lo queria de la manera mas dinamica posible, Gracias!
  #12 (permalink)  
Antiguo 04/10/2011, 09:22
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Problemas con str_replace

Cita:
Iniciado por h2swider Ver Mensaje
Muy interesante, no lo conocía, pero no estoy de acuerdo con

Código PHP:
$wordClean[$i]=str_replace($parametros""$datos);
    
$i++; 
Ese $i está de más, creo que la mejor opción seria.

Código PHP:
$wordClean[]=str_replace($parametros""$datos); 

La razon por la que pongo el $i es para controlar el tamaño puesto que el Array que he puesto de nombres era un ejemplo para que lo entendierais ($var = array("Lea Thompson", "Joe Penny", "William R. Moses");) puesto que es un array que lo le paso a la funcion y por lo tanto no siempre tendra el mismo tamaño, creo que igualmente tu opcion tambien vale pero me gusta mas tener controlado ese aspecto.
  #13 (permalink)  
Antiguo 04/10/2011, 09:23
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

No puede ser, lo probé y funciona correctamente, es algo demasiado simple, estas seguro que probaste con mi código y no con el tuyo?

Código PHP:
<?php

$var 
= array("Lea Thompson""Joe Penny""William R. Moses");
foreach (
$var as $datos) {
    
$wordClean[] = preg_replace('/[-:\.]/'''$datos);
}
print_r($wordClean);
?>
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #14 (permalink)  
Antiguo 04/10/2011, 11:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Problemas con str_replace

Simplemente tienes que hacer esto, más o menos como dice Eleazan pero sin incrementadores... Ya estás en un bucle no son necesarios.

Código PHP:
Ver original
  1. <?php
  2. $parametros = Array("-",".",":");  
  3. $var = array("Lea Thompson", "Joe Penny", "William R. Moses");
  4. $wordClean = array();
  5.  
  6. foreach ($var as $datos){
  7.         $wordClean[]=str_replace($parametros, '', $datos);
  8. }
  9.  
  10. echo '<pre>';
  11. print_r($wordClean);
  12. echo '<pre>';

O como dice h2swider da el mismo resultado.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #15 (permalink)  
Antiguo 04/10/2011, 12:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Problemas con str_replace

Cita:
Iniciado por andresdzphp Ver Mensaje
Simplemente tienes que hacer esto, más o menos como dice Eleazan pero sin incrementadores... Ya estás en un bucle no son necesarios.

Código PHP:
Ver original
  1. <?php
  2. $parametros = Array("-",".",":");  
  3. $var = array("Lea Thompson", "Joe Penny", "William R. Moses");
  4. $wordClean = array();
  5.  
  6. foreach ($var as $datos){
  7.         $wordClean[]=str_replace($parametros, '', $datos);
  8. }
  9.  
  10. echo '<pre>';
  11. print_r($wordClean);
  12. echo '<pre>';

O como dice h2swider da el mismo resultado.

Saludos.
Claro estaba planteando eso, el str_replace sin contador $i
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #16 (permalink)  
Antiguo 05/10/2011, 01:43
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Problemas con str_replace

Cita:
Iniciado por h2swider Ver Mensaje
Ese $i está de más, creo que la mejor opción seria.

Código PHP:
$wordClean[]=str_replace($parametros""$datos); 
Yo tb lo creo... pero, como no sé qué es $i, de dónde viene, o dónde acaba... he preferido dejarla xD
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: variables
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 14:11.