(PHP 4, PHP 5)
strtr — Traduce ciertos caracteres o reemplaza substrings
$str
, string $from
, string $to
)$str
, array $replace_pairs
)
Si se dan tres argumentos, esta función devuelve una copia de
str
donde todas las apariciones de cada caracter
(byte simple) en from
ha sido traducido al
caracter correspondiente en to
es decir, todas
las apariciones de $from[$n] han sido reemplazadas con
$to[$n], donde $n es un desplazamiento
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 debe ser un array en la forma de 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 intentarán primero. Una vez una substring ha sido reemplazada, su nuevo valor no será buscado de nuevo.
En este caso, las claves y los valores pueden tener cualquier longitud, siempre que
no haya llaves vacías; adicionalmente, la longitud del valor devuelto puede
diferir de la de str
.
Sin embargo, esta función será la más eficiente cuando todas las claves tienen el
mismo tamaño.
string
Tipo string La cadena que se está traduciendo.
from
Tipo string sus caracteres serán reemplazado por
to
.
to
Tipo string los caracteres que reemplazarán a
from
.
replace_pairs
El parámetro replace_pairs
puede ser usado en lugar de
to
y from
, en cuyo caso es un
array en la forma array('from' => 'to', ...).
Devuelve el string traducido.
Si el replace_pairs
contiene una clave con
una string vacía (""),
se devolverá FALSE
.
Ejemplo #1 Ejemplo de strtr()
<?php
//En esta forma, strtr() hace una traducción byte por byte
//Por lo tanto, se asume una codificación de un solo byte aquí:
$addr = strtr($addr, "äåö", "aao");
?>
El siguiente ejemplo muestra el comportamiento de strtr() cuando se llama con sólo dos argumentos. Tenga en cuenta la preferencia de los reemplazos ("h" no se toma porque hay emparejamientos más largos) y como el texto remplazado no fue buscado de nuevo.
Ejemplo #2 Ejemplo de strtr() con 2 argumentos
<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
El resultado del ejemplo sería:
hello all, I said hi
Los dos modos de comportamiento son muy diferentes. Con tres argumentos strtr() reemplazará bytes; con dos, puede reemplazar substrings más largas.
Ejemplo #3 Comparación del comportamiento de strtr()
<?php
echo strtr("baab", "ab", "01"),"\n";
$trans = array("ab" => "01");
echo strtr("baab", $trans);
?>
El resultado del ejemplo sería:
1001 ba01