strtr

(PHP 4, PHP 5, PHP 7)

strtrConvierte caracteres o reemplaza substrings

Descripción

strtr ( string $str , string $from , string $to ) : string
strtr ( string $str , array $replace_pairs ) : string

Si se dan tres argumentos, esta función devuelve una copia de str, donde todas las apariciones de cada carácter (byte simple) en from han sido convertidas al carácter correspondiente en to, es decir, todas las apariciones de $from[$n] han sido reemplazadas con $to[$n], donde $n es un índice válido en ambos argumentos.

Si from y to tienen distinta logitud, se ignoran los caracteres extra del string más largo. La longitud de str será la misma que la del valor devuelto.

Si se dan dos argumentos, el segundo debería ser un array en la forma array('from' => 'to', ...). El valor devuelto es un string donde todas las apariciones de las claves del array han sido reemplazadas por los valores correspondientes. Las claves más largas se probarán primero. Una vez un substring ha sido reemplazado, su nuevo valor no se buscará de nuevo.

En este caso, las claves y los valores pueden tener cualquier longitud, siempre que no haya claves vacías; además, la longitud del valor devuelto podría diferir de la de str. Sin embargo, esta función será la más eficiente cuando todas las claves tienen el mismo tamaño.

Parámetros

string

El string a convertir.

from

El string a convertir a to.

to

El string que reemplaza a from.

replace_pairs

El parámetro replace_pairs se podría usar en lugar de to y from, en cuyo caso sería un array en la forma array('from' => 'to', ...).

Valores devueltos

Devuelve el string convertido.

Si replace_pairs contiene una clave que es un string vacío (""), devolverá FALSE. Si str no es un escalar, no será convertido a un string, se emitirá una advertencia y devolverá NULL.

Ejemplos

Ejemplo #1 Ejemplo de strtr()

<?php
//De esta forma, strtr() hace una conversión byte a byte
//Por lo tanto, aquí se asume una codificación de un solo byte:
$addr strtr($addr"äåö""aao");
?>

El siguiente ejemplo muestra el comportamiento de strtr() cuando se llama con sólo dos argumentos. Observe la preferencia de los reemplazos ("h" no se toma porque hay coincidencias más largas) y cómo el texto remplazado no se busca de nuevo.

Ejemplo #2 Ejemplo de strtr() con dos argumentos

<?php
$conv 
= array("h" => "-""hola" => "hey""hey" => "hola");
echo 
strtr("hey, dije hola"$conv);
?>

El resultado del ejemplo sería:

hola, dije hey

Los dos modos de comportamiento son muy diferentes. Con tres argumentos, strtr() reemplazará bytes; con dos, podría reemplazar substrings más largos.

Ejemplo #3 Comparación del comportamiento de strtr()

<?php
echo strtr("baab""ab""01"),"\n";

$conv = array("ab" => "01");
echo 
strtr("baab"$conv);
?>

El resultado del ejemplo sería:

1001
ba01

Ver también

  • str_replace() - Reemplaza todas las apariciones del string buscado con el string de reemplazo
  • preg_replace() - Realiza una búsqueda y sustitución de una expresión regular