Foros del Web » Programando para Internet » PHP »

Cómo simplificar un replace entre arrays

Estas en el tema de Cómo simplificar un replace entre arrays en el foro de PHP en Foros del Web. Programé una variable para que devolviera todo el texto en minúsculas, pero hay 2 grupos de palabras que necesito restaurar: 1 grupo en puras mayúsculas ...
  #1 (permalink)  
Antiguo 30/01/2009, 18:26
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Cómo simplificar un replace entre arrays

Programé una variable para que devolviera todo el texto en minúsculas, pero hay 2 grupos de palabras que necesito restaurar: 1 grupo en puras mayúsculas y otro en altas y bajas. Ésta es parte de la función:

Código PHP:
<?php 
$mayusculas 
= array( 
    
'onu' 
    
'oea' 
    
'oms'
);

$mayusculas_reemplazo = array( 
    
'ONU' 
    
'OEA' 
    
'OMS'
);

$capitales = array( 
    
'caracas' 
    
'buenos aires' 
    
'bogotá'
);

$capitales_reemplazo = array( 
    
'Caracas' 
    
'Buenos Aires' 
    
'Bogotá'
);

$texto str_replace$mayusculas $mayusculas_reemplazo $texto );
$texto str_replace$capitales $capitales_reemplazo $texto );
 
?>
Lo que quisiera es encontrar una manera de simplificar el proceso, pues actualmente hay que escribir 2 veces la misma cosa en cada array. He intentado convirtiendo cadenas en array y trabajar con las variables resultantes, devolviendo todo en minúsculas.
  #2 (permalink)  
Antiguo 30/01/2009, 18:53
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Cómo simplificar un replace entre arrays

y si usas str-ireplace ?

Código PHP:
<?php 

$texto 
"Los de la Onu son unos tipos que controlan el destino mundial y los de la OEA son 

tambien bastantes turros"
;

$organismos = array( 
    
'ONU' 
    
'OEA' 
    
'OMS'
);


$ciudades = array( 
    
'Caracas' 
    
'Buenos Aires' 
    
'Bogotá'
);

echo 
str_ireplace$organismos $ciudades $texto );
?>
Resultado:

Cita:
Los de la Caracas son unos tipos que controlan el destino mundial y los de la Buenos Aires son tambien bastantes turros
Suerte amigo!
__________________
Salu2!

Última edición por Italico76; 30/01/2009 a las 18:58
  #3 (permalink)  
Antiguo 30/01/2009, 19:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cómo simplificar un replace entre arrays

Buena idea el ireplace, usando la misma matriz para busqueda y reemplazo.... buena idea!!!
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 30/01/2009, 19:36
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Cómo simplificar un replace entre arrays

Gracias por tu respuesta Italico76 pero lamentablemente no es lo que busco. Lo explico un poco mejor:

Actualmente la función devuelve un resultado como éste:

- Sin el replace: "caracas y buenos aires serán visitadas mañana por el presidente de la onu".

- Con el replace: "Caracas y Buenos Aires serán visitadas mañana por el presidente de la ONU".

Como se puede ver hay 4 arrays: 2 que actúan sobre las palabras capitales (altas y bajas) y otros 2 para las mayúsculas. Al ser 2 para cada uno hay que ingresar el término 2 veces (uno en minúscula y otro ya modificado). Lo que quisiera es poder escribir las palabras sólo 1 vez y que alguna variable se encargue de modificarla en el 2do array de cada juego (en este caso $capitales_reemplazo y $mayusculas_reemplazo).
  #5 (permalink)  
Antiguo 30/01/2009, 20:08
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Cómo simplificar un replace entre arrays

Código PHP:
<?php 
$organismos 
= array( 
    
'ONU' 
    
'OEA' 
    
'OMS'
);

$capitales = array( 
    
'Caracas' 
    
'Buenos Aires' 
    
'Bogotá'
);

$texto "caracas y buenos aires serán visitadas mañana por el turro presidente de la onu";    

$texto str_ireplace($organismos ,$organismos $texto );
$texto str_ireplace($capitales ,$capitales $texto );

echo 
$texto;

 
?>
Cita:
Caracas y Buenos Aires serán visitadas mañana por el turro presidente de la ONU
Espero ahora te sirva...... usas solo dos arrays.....
__________________
Salu2!

Última edición por Italico76; 30/01/2009 a las 20:22
  #6 (permalink)  
Antiguo 30/01/2009, 20:24
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Cómo simplificar un replace entre arrays

Creo que esta solucionado........
__________________
Salu2!
  #7 (permalink)  
Antiguo 30/01/2009, 20:45
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Cómo simplificar un replace entre arrays

Joooo Italico me quito el sombrero hombre! Resultó más simple de lo que pensaba . Muchas gracias!.

Saludos.
  #8 (permalink)  
Antiguo 30/01/2009, 21:29
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cómo simplificar un replace entre arrays

Y bueno, como mero aporte, se puede meter todos los elementos a un solo array (o armarlos separados y luego unirlos) y así evitar tener que ejecutar dos veces la función str_ireplace.

Código PHP:
$reemplazos = array(  
    
'ONU' ,  
    
'OEA' ,  
    
'OMS'  ,
    
'Caracas' ,  
    
'Buenos Aires' ,  
    
'Bogotá' 
); 

$texto "caracas y buenos aires serán visitadas mañana por el turro presidente de la onu";     

$texto str_ireplace($reemplazos ,$reemplazos $texto ); 

echo 
$texto
ó
Código PHP:
$organismos = array(  
    
'ONU' ,  
    
'OEA' ,  
    
'OMS' 
); 

$capitales = array(  
    
'Caracas' ,  
    
'Buenos Aires' ,  
    
'Bogotá' 
); 

$texto "caracas y buenos aires serán visitadas mañana por el turro presidente de la onu";     

$reemplazos array_merge($organismos$capitales);
$texto str_ireplace($reemplazos ,$reemplazos $texto ); 

echo 
$texto
Un saludo,
  #9 (permalink)  
Antiguo 31/01/2009, 02:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Cómo simplificar un replace entre arrays

y yo me quito el sombrero por OkRam por hacerlo con un solo array... je je

El codigo quedo super compacto y lo unico es que si lo arreglos tuvieran muchos elementos y el proceso tuviera que ser eficiente en tiempo de ejecucion....seria de promedio la mitad de rapido que con dos arreglos.

Bahhhhh! felicitaciones, OkRAM
__________________
Salu2!
  #10 (permalink)  
Antiguo 01/02/2009, 01:47
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Cómo simplificar un replace entre arrays

De verdad que sí. Acabo de probar el código y funciona de maravilla . Gracias okram. De los dos códigos que posteaste me quedaré con el primero (lo veo más elegante que el segundo). En cuanto a lo que comenta Italico76, a lo mucho usaré unas 20 o 30 palabras/ frases sustitutas.

Saludos.
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 22:19.