"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > strtr vs str_replace: Quando devo usar cada função de substituição de string PHP?

strtr vs str_replace: Quando devo usar cada função de substituição de string PHP?

Publicado em 2024-11-12
Navegar:638

strtr vs str_replace: When should I use each PHP string replacement function?

strtr vs str_replace: quando usar diferentes funções de substituição

Em PHP, as funções strtr e str_replace podem realizar substituições de strings. No entanto, a escolha da função correta depende de requisitos específicos e casos de uso.

Contraste no pedido de substituição

Embora a saída resultante possa parecer idêntica em alguns casos, há um diferença sutil entre as duas funções:

echo strtr('test string', 'st', 'XY'); // "YeXY XYring"
echo str_replace(array('s', 't'), array('X', 'Y'), 'test string'); // "YeXY XYring"

strtr substitui substrings da direita para a esquerda, enquanto str_replace substitui da esquerda para a direita. Essa diferença fica evidente ao substituir substrings sobrepostas:

echo strtr('1 2 3 3', '1 2 3', 'XYZ'); // "1 2 3 Z"
echo str_replace(array('1 2 3', '1 2'), array('XYZ', 'AB'), '1 2 3 3'); // "ABXYZ"

Substituindo chaves de matriz versus múltiplas substrings

Outra distinção está em como as matrizes de substituição são tratadas:

$arr = array("1" => "A", "2" => "B", "3" => "C");
echo strtr('123', $arr); // "ABC"
echo str_replace(array_keys($arr), array_values($arr), '123'); // "ABC"

Neste caso, ambas as funções substituem os caracteres pelos valores correspondentes da matriz. No entanto, strtr requer uma matriz associativa com pares de valores-chave, enquanto str_replace pode operar em matrizes simples de substrings e substituições.

Prioridade de substituição

strtr prioriza substituições com base em o comprimento da substring que está sendo substituída, em ordem decrescente. Por outro lado, str_replace processa substituições na ordem definida na matriz de substituição. Isso pode levar a resultados diferentes, conforme demonstrado pelo exemplo a seguir:

$text = "PHP: Hypertext Preprocessor";
$text_strtr = strtr($text, array("PHP: Hypertext Preprocessor" => "PHP", "PHP" => "PHP: Hypertext Preprocessor"));
$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor"), array("PHP: Hypertext Preprocessor", "PHP"), $text);

var_dump($text_strtr); // string(3) "PHP"
var_dump($text_str_replace); // string(27) "PHP: Hypertext Preprocessor"

Concluindo, tanto strtr quanto str_replace oferecem abordagens diferentes para substituição de strings em PHP. Compreender suas nuances sutis de comportamento e sintaxe irá guiá-lo na escolha da função apropriada para seu caso de uso específico.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3