substr_replace str_replace special reemplazar especiales ejemplo characters caracteres array php arrays str-replace

str_replace - substr php



str_replace con array (4)

Como alternativa a la respuesta marcada como correcta, si tiene que reemplazar palabras en lugar de caracteres, puede hacerlo con este código:

$query = "INSERT INTO my_table VALUES (?, ?, ?, ?);"; $values = Array("apple", "oranges", "mangos", "papayas"); foreach (array_fill(0, count($values), ''?'') as $key => $wildcard) { $query = substr_replace($query, ''"''.$values[$key].''"'', strpos($query, $wildcard), strlen($wildcard)); } echo $query;

Demostración aquí: http://sandbox.onlinephpfunctions.com/code/56de88aef7eece3d199d57a863974b84a7224fd7

Estoy teniendo algunos problemas con la función PHP str_replace al usar matrices.

Tengo este mensaje:

$message = strtolower("L rzzo rwldd ty esp mtdsza''d szdepw ty esp opgtw''d dple");

Y estoy tratando de usar str_replace esta manera:

$new_message = str_replace( array(''l'',''m'',''n'',''o'',''p'',''q'',''r'',''s'',''t'',''u'',''v'',''w'',''x'',''y'',''z'',''a'',''b'',''c'',''d'',''e'',''f'',''g'',''h'',''i'',''j'',''k''), array(''a'',''b'',''c'',''d'',''e'',''f'',''g'',''h'',''i'',''j'',''k'',''l'',''m'',''n'',''o'',''p'',''q'',''r'',''s'',''t'',''u'',''v'',''w'',''x'',''y'',''z''), $message);

El resultado debería ser A good glass in the bishop''s hostel in the devil''s seat , pero en cambio, obtengo p voos vlpss xn twt qxswop''s wosttl xn twt stvxl''s stpt .

Sin embargo, cuando solo trato de reemplazar 2 letras las reemplaza bien:

$new_message = str_replace(array(''l'',''p''), array(''a'',''e''), $message);

Las letras l y p serán reemplazadas por a y e .

¿Por qué no funciona con la matriz alfabética completa si ambos son exactamente del mismo tamaño?


Debido a que str_replace () reemplaza de izquierda a derecha, podría reemplazar un valor insertado previamente al hacer reemplazos múltiples.

// Outputs F because A is replaced with B, then B is replaced with C, and so on... // Finally E is replaced with F, because of left to right replacements. $search = array(''A'', ''B'', ''C'', ''D'', ''E''); $replace = array(''B'', ''C'', ''D'', ''E'', ''F''); $subject = ''A''; echo str_replace($search, $replace, $subject);


Fácil y mejor que str_replace :

<?php $arr = array( "http://" => "http://www.", "w" => "W", "d" => "D"); $word = "http://desiweb.ir"; echo strtr($word,$arr); ?>

strtr PHP doc here


str_replace con matrices simplemente realiza todos los reemplazos secuencialmente. Use strtr lugar de hacerlos todos a la vez:

$new_message = strtr($message, ''lmnopq...'', ''abcdef...'');