strtr

(PHP 4, PHP 5, PHP 7, PHP 8)

strtrTraduz caracteres ou substitui substrings

Descrição

strtr(string $string, string $from, string $to): string

Assinatura alternativa (não suportada com argumentos nomeados):

strtr(string $string, array $replace_pairs): string

Se for chamada com três argumentos, esta função retorna uma cópia de string onde todas as ocorrências de cada caractere (de um byte) em from tenham sido traduzidas para o caractere correspondente em to, isto é, cada ocorrência de $from[$n] tenha sido substituída por $to[$n], onde $n é um deslocamento válido em ambos os argumentos.

Se from e to tiverem comprimentos diferentes, os caracteres adicionais no argumento mais longo são ignorados. O comprimento de string será o mesmo do valor de retorno.

Se for chamada com dois argumentos, o segundo deve ser um array na forma array('from' => 'to', ...). O valor de retorno é uma string onde todas as ocorrências das chaves do array tenham sido substituídas pelos valores correspondentes. As chaves mais longas são substituídas primeiro. Assim que ums substring é substituída, seu novo valor não será pesquisado novamente.

Neste caso, as chaves e os valores podem ter qualquer comprimento, desde que não haja chave vazia; adicionalmente, o comprimento do valor de retorno pode ser diferente do comprimento de string. Entretanto, esta função será mais eficiente quando todas as chaves têm o mesmo tamanho.

Parâmetros

string

A string a ser traduzida.

from

A string que deverá ser traduzida para to.

to

A string que substituirá from.

replace_pairs

O parâmetro replace_pairs pode ser usado no lugar de to e from, como um array na forma array('from' => 'to', ...).

Se replace_pairs contiver uma chave que seja uma string vazia (""), o elemento será ignorado; a partir do PHP 8.0.0, um alerta E_WARNING é emitido neste caso.

Valor Retornado

Retorna a string traduzida.

Exemplos

Example #1 Exemplo de strtr()

<?php
// Nesta forma, strtr() faz uma tradução byte a byte.
// Portanto, aqui é assumida uma codificação de um byte:
$addr = strtr($addr, "äåö", "aao");
?>

O exemplo a seguir mostra o comportamento de strtr() quando chamada com apenas dois argumentos. Observe a preferência das substituições ("h" não é capturado pois existem correspondências mais longas) e como o texto já substituído não é pesquisado novamente.

Example #2 Exemplo de strtr() com dois argumentos

<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>

O exemplo acima produzirá:

hello all, I said hi

Os dois modos de comportamento são substancialmente diferentes. Com três argumentos, strtr() irá substituir bytes; com dois, ela pode substituir substrings mais longas.

Example #3 Comparação de comportamentos de strtr()

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

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

O exemplo acima produzirá:

1001
ba01

Veja Também

  • str_replace() - Substitui todas as ocorrências da string de pesquisa com a string de substituição
  • preg_replace() - Realiza uma pesquisa por uma expressão regular e substitui