Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como reemplazar varias partes de una cadena en PHP

Estas en el tema de Como reemplazar varias partes de una cadena en PHP en el foro de PHP en Foros del Web. Hola a todos, Manualmente ingreso un texto con varias líneas y espacios, y necesito imprimir y eliminar varias partes de esa cadena, por ejemplo ingreso ...
  #1 (permalink)  
Antiguo 24/01/2013, 10:36
 
Fecha de Ingreso: julio-2012
Ubicación: Bogotá
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Como reemplazar varias partes de una cadena en PHP

Hola a todos,
Manualmente ingreso un texto con varias líneas y espacios, y necesito imprimir y eliminar varias partes de esa cadena, por ejemplo ingreso el texto:

ENTRADA:
Código PHP:
$textoEntrada="
Este es mi ejemplo

Tengo que cambiar una información sobre unos colores
tal vez podría ser así...
Un color brillante: amarillo, color del cielo: azul...
Color del pasto: verde, color de la sangre: rojo,
y termina el ejemplo..." 
..........

Supongamos que en el texto de salida quiero reemplazar los colores en español por inglés (amarillo X yellow, azul X blue, ... etc)


Código PHP:
        $cadena preg_replace("/amarillo/","yellow"$textoEntrada);
        echo 
$cadena
Pero en $cadena solo puedo hacer un reemplazo (por lo que sé), como podría sacar el resultado que quiero??


De atemano muchas Gracias!
  #2 (permalink)  
Antiguo 24/01/2013, 10:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como reemplazar varias partes de una cadena en PHP

preg_replace te acepta arrays para hacer el reemplazo, ve el ejemplo del manual:
Código PHP:
Ver original
  1. <?php
  2. $string = 'The quick brown fox jumped over the lazy dog.';
  3. $patterns = array();
  4. $patterns[0] = '/quick/';
  5. $patterns[1] = '/brown/';
  6. $patterns[2] = '/fox/';
  7. $replacements = array();
  8. $replacements[2] = 'bear';
  9. $replacements[1] = 'black';
  10. $replacements[0] = 'slow';
  11. echo preg_replace($patterns, $replacements, $string);
  12. ?>

Saludos.
  #3 (permalink)  
Antiguo 04/02/2013, 14:36
 
Fecha de Ingreso: julio-2012
Ubicación: Bogotá
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Como reemplazar varias partes de una cadena en PHP

Gracias por responder ;)

Efectivamente así me sirve, pero no doy con como solucionar mi inconveniente, lo comento...

Cada X días me pasan un documento con unos datos como el siguiente:

______________________________________________
06000000000000000000000000000000000000000 100003777 00000 1890000 00010 100006500006505145680000002
06000000000000000000000000000000000000000 100000480 00000 3022786 00010 100007600007605147320000003
06000000000000000000000000000000000000000 100000068 00000 2267089 00010 100008900008905100180000004
______________________________________________

cada línea consta de 94 caracteres, distribuidos en un número de grupos fijos:

Grupo 1: 41 caracteres
Grupo 2: 9 caracteres
Grupo 3: 5 caracteres
Grupo 4: 7 caracteres
Grupo 5: 5 caracteres
Grupo 6: 13 caracteres
Grupo 7: 14 caracteres

que al hacer un proceso me tiene que quedar como resultado:
Grupo 2 Grupo 4 Grupo 6
______________________________________________
100003777 1890000 1000065000065
100000480 3022786 1000076000076
100000068 2267089 1000089000089
______________________________________________

La idea es quitar los números que estan en negrilla, el problema es que al querer reemplazar "00000" (5 ceros [Grupo 3]) me los quita también donde se encuentran los 5 ceros, ej Fila1...Grupo4+Grupo5(1 cero)=5 ceros que me reemplaza y no debería ser así.

He intentado con el Substr y el strlen pero no me sale, no se como acomodarlo...

Agradezco la ayuda ;)
  #4 (permalink)  
Antiguo 04/02/2013, 15:44
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Como reemplazar varias partes de una cadena en PHP

Si la estructura es fija, con substr seria suficiente.
  #5 (permalink)  
Antiguo 04/02/2013, 16:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como reemplazar varias partes de una cadena en PHP

Exacto si son datos fijos con substr tiene que ser más que suficiente, por ejemplo:
Código PHP:
Ver original
  1. $grupo2 = substr($cadena, 41, 9);

Saludos.
  #6 (permalink)  
Antiguo 05/02/2013, 10:33
 
Fecha de Ingreso: julio-2012
Ubicación: Bogotá
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Como reemplazar varias partes de una cadena en PHP

Cita:
Iniciado por GatorV Ver Mensaje
Exacto si son datos fijos con substr tiene que ser más que suficiente, por ejemplo:
Código PHP:
Ver original
  1. $grupo2 = substr($cadena, 41, 9);

Saludos.
pero esa sería una ubicación fija, el problema es que si ingreso todo en una caja de texto (unas 6-8 lineas) me toma el texto completo y el substr($cadena, 41, 9) no lo haría para cada línea sino en la cadena completa. :/
  #7 (permalink)  
Antiguo 05/02/2013, 10:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como reemplazar varias partes de una cadena en PHP

Ah esa es otra cosa, primero separa la cadena por el salto de línea (\n) para que tengas en un arreglo cada entrada y luego puedas aplicar el substr.

Saludos.
  #8 (permalink)  
Antiguo 08/02/2013, 13:54
 
Fecha de Ingreso: julio-2012
Ubicación: Bogotá
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Como reemplazar varias partes de una cadena en PHP

Cita:
Iniciado por GatorV Ver Mensaje
Ah esa es otra cosa, primero separa la cadena por el salto de línea (\n) para que tengas en un arreglo cada entrada y luego puedas aplicar el substr.

Saludos.
No he tenido tiempo para intentarlo, de momento lo solucioné por líneas ya que me lo estaban pidiendo rápido, no encontré pronta respuesta y me tocó así, si hay la posibilidad de modificarlo lo haré y lo subo.

Muchas Gracias a todos por su colaboración ;)

Etiquetas: cadena, colores, preg_replace, replace, str, string
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 19:09.