Foros del Web » Programando para Internet » PHP »

Reemplazar varios caracteres a la vez

Estas en el tema de Reemplazar varios caracteres a la vez en el foro de PHP en Foros del Web. Estoy haciendo un pequeño programa que extrae diferentes datos de una secuencia de adn. Supongo que muchos no sabreis de que va eso del ADN ...
  #1 (permalink)  
Antiguo 01/03/2013, 09:52
laura_moreno14
Invitado
 
Mensajes: n/a
Puntos:
Reemplazar varios caracteres a la vez

Estoy haciendo un pequeño programa que extrae diferentes datos de una secuencia de adn. Supongo que muchos no sabreis de que va eso del ADN pero tampoco tiene mucha importancia para resolver el problema. Me explico.

Yo tengo una secuencia formada solo por A, C, T y G. Por ejemplo:

ACCTGTGGACCTGACCATGGACGGACCCTAGCA

Quiero mediante un script remplazar cada letra de esta manera

A --> T
T --> A
C --> G
G --> C

Soy capaz de remplazar un caracter, por ejemplo las A por T. pero no remplazar todas. El problema es que, como es lógico, cuando remplazo las As por Ts, luego Ts por As, y el resultado es que todas las As y Ts son As.

No se si me explicado bien, necesito de alguna manera realizar todos los cambios en la misma cadena a la vez.

Espero que puedan ayudarme, soy una novata con php, estoy empezando y es el primer problema en el que me quedado realmente atascada.

Última edición por laura_moreno14; 01/03/2013 a las 10:00
  #2 (permalink)  
Antiguo 01/03/2013, 10:14
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 12 años, 9 meses
Puntos: 11
Respuesta: Reemplazar varios caracteres a la vez

Y si pruebas con str_replace? pero pasas un array en lugar de un solo caracter para reemplazar: http://php.net/manual/es/function.str-replace.php
  #3 (permalink)  
Antiguo 01/03/2013, 10:24
Avatar de Ekel  
Fecha de Ingreso: noviembre-2009
Mensajes: 62
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Reemplazar varios caracteres a la vez

Código PHP:
$a = array('A','T','G','C');
$b = array('T','A','C','G');
$str 'ACCTGTGGACCTGACCATGGACGGACCCTAGCA'
echo str_replace($a,$b,$str
__________________
Black Nation Army
  #4 (permalink)  
Antiguo 01/03/2013, 10:29
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Reemplazar varios caracteres a la vez

No sirve solo con str_replace, tienes que convertir el string en un array tal vez con str_split (lo recorres con un foreach) y vas comparando si es la letra A concatenas una T y si es una T concatenas una A.
__________________
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
  #5 (permalink)  
Antiguo 01/03/2013, 10:31
laura_moreno14
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Reemplazar varios caracteres a la vez

Ya he probado y tengo el mismo problema

Código PHP:
Ver original
  1. function convDna ($sec) {
  2.    
  3.     $buscar = array ("A","T","C","G");
  4.    
  5.     $remplazar = array ("T","A","G","C");
  6.    
  7.     $rna = str_replace($buscar,$remplazar,"$sec");
  8.    
  9.  
  10.     echo "$rna";
  11. }


En el resultado aparecen solo A y C.
  #6 (permalink)  
Antiguo 01/03/2013, 10:36
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 12 años, 9 meses
Puntos: 11
Respuesta: Reemplazar varios caracteres a la vez

O puedes hacerlo a "pie"... Hice esto, pero la verdad no sé si entendi tu pregunta:

Código:
$cadena = "ACCTGTGGACCTGACCATGGACGGACCCTAGCA";
/*
A --> T
T --> A
C --> G
G --> C
*/
$max = strlen($cadena);
for ($i=0;$i<$max; $i++){
	if ($cadena[$i] == "A")
		$cadena[$i] = "T";
		
	else if ($cadena[$i] == "T")
		$cadena[$i] = "A";
		
	else if ($cadena[$i] == "C")
		$cadena[$i] = "G";
	
	else if ($cadena[$i] == "G")
		$cadena[$i] = "C";
}

echo $cadena;
  #7 (permalink)  
Antiguo 01/03/2013, 10:44
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Reemplazar varios caracteres a la vez

Si lo que necesitas es como lo que pone @neglivv bastaría con usar la función strtr

Código PHP:
Ver original
  1. <?php
  2.  
  3. $str = 'ACCTGTGGACCTGACCATGGACGGACCCTAGCA';
  4.  
  5. $trans = array('A' => 'T', 'T' => 'A', 'G' => 'C', 'C' => 'G');
  6. echo strtr($str, $trans); //TGGACACCTGGACTGGTACCTGCCTGGGATCGT

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
  #8 (permalink)  
Antiguo 01/03/2013, 12:36
laura_moreno14
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Reemplazar varios caracteres a la vez

Gracias, me sirvio de mucho. Tanto el codigo de neglivv como el de andresdzphp funcionan perfectamente , aunque utilizare el ultimo por ser mas corto. Gracias de nuevo!

Etiquetas: cadenas, funciones, procesar
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 07:02.