(PHP 4, PHP 5, PHP 7, PHP 8)
strtr — Convierte caracteres o reemplaza substrings
$str
, string $from
, string $to
) : 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.
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', ...)
.
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
.
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