Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/10/2015, 16:54
Amiancht
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 11 años
Puntos: 25
Respuesta: Duda con substr_replace

Cita:
Iniciado por Jilti Ver Mensaje
Saludos amigos.

Tengo un problema con substr_replace y os lo pregunto por si podéis echarme una mano.

Tengo un string en el que debo colocar cada ciertos caracteres otro carácter. Me explico, en el string "abcdefghijklmn" tengo que colocar a partir del segundo carácter el símbolo "@".... eso lo tengo hecho.

Código PHP:
Ver original
  1. <?php
  2. $string = substr_replace("abcdefghijklmn", "@", 2, 0)."</br>";
  3. echo $string;
  4. ?>

El problema me viene cuando tengo que colocar varios "@", por ejemplo en la posición 2, 6 y 8. No se si me he explicado bien.

¿Cómo se haría? y si se puede hacer de otra manera.... ¿cual?

Muchas gracias de antemano por la ayuda.
La función substr_replace lo que hace es remplazar el una parte del string por el string que le pasas. Sin embargo si le pones a ultimo parametro 0, no sustituye nada, y simplemente lo inserta.

Eso básicamente ya veo que lo comprendes. La función si vas al manual de php te va a decir lo mismo, y no te va a resolver tu problema, ya que no tiene ningún otra forma de usarla como tú quieres. Aquí a tu pregunta, lo debes resolver a partir de tu propia lógica.

Lo que deberas hacer es llamar varias veces a la misma función, pasandole como parametro $string, y teniendo en cuenta además los caracteres que vas insertando.
Código PHP:
Ver original
  1. <?php
  2. $a = 1;
  3. $string = substr_replace("1234567890", "?", 2, 0);
  4. $string = substr_replace($string, "?", 6 + $a++, 0);
  5. $string = substr_replace($string, "?", 8 + $a++, 0);
  6. echo $string;
La primera llamada lo queremos poner despues de 2, y no hacemos nada extraordinario. Pero en la segunda linea, le pasamos el string actualizado de la anterior y lo queremos poner en 6, pero como anteriormente hemos insertado entonces la posición 6 no es la misma que la de antes, por lo que debemos sumarle 1. Y en la tercera llamada le sumamos 2 ($a++) a 8, porque ya tendríamos 2 caracteres insertados anteriormente.

Un saludo.