Comunidad de diseño web y desarrollo en internet online

Sustituir un caracter por otros caracteres diferentes.

Citar            
MensajeEscrito el 18 Jul 2010 05:53 am
Wenas, mi problema es el siguiente, dada una cadena por ejemplo:

"Mi ? es de color ?"

y teniendo un array como:

array("coche", "rojo");

Como se puede reemplazar en este caso los caracteres "?" por los valores del array?, es decir, se trata de q para el primer caracter "?" se sustituya por el primer elemento del array, en este caso "coche" y el segundo caracter "?" por el segundo elemento etc... de manera q al final pueda conseguir la cadena "mi coche es de color rojo".

Muchas gracias por la ayuda :)

Por Lokhi

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jul 2010 06:41 am
prueba a ver si las expresiones regulares te sirven de algo.

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 18 Jul 2010 10:54 am
La verdad es q has dado en el clavo talcual, parece q la mejor manera de hacer esto es con la funcion preg_replace, esta tiene 3 argumentos, el 1 es el patron q queremos sustituir, el 2 por lo q queremos sustituir el patron y el 3 la cadena donde se llevara a cabo la sustitucion, pues bien con esto la posible solucion seria algo asi:

$a = array("coche", "rojo")
$s = "Mi ? es de color ?"
$r = preg_replace('/\?/', $a , $s );

el problema q he encontrado con esta solucion tiene q ver con el tipo de los parametros, me explico, segun he leido los posibles tipos de los parametros para esta funcion son los siguientes:

pattern replacement

string string
array string
array array
string array

Estos son los posibles tipos para los dos primeros argumentos de la funcion , pues bien las 3 primeras combinaciones son validas y la ultima q es la q he usado yo resulta q es la unica q no es valida XD, no se puede tener una cadena como patron y un array para reemplazar el patron por lo q la solucion q escribi arriba no funciona, de hecho al ejecutarlo php me devuelve el siguiente error:

Warning: preg_replace() [function.preg-replace]: Parameter mismatch, pattern is a string while replacement is an array in...

La verdad es q en este punto no se por donde continuar, toda ayuda sera bien recibida, gracias :)

Por Lokhi

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Jul 2010 07:38 am
Al final la solucion q encontre fue la siguiente:

$a = array("coche", "rojo");
$s = "Mi ? es de color ?.";

function replace($s, $a) {
for($i = 0; $i < count($a); $i++) {

$ns = preg_replace('/\?/', $a[$i], $s, 1);
$s = $ns;

}
}

$mi_cadena = replace($s, $a);

Por Lokhi

4 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.