"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > strtr vs str_replace: ¿Cuándo debo usar cada función de reemplazo de cadena de PHP?

strtr vs str_replace: ¿Cuándo debo usar cada función de reemplazo de cadena de PHP?

Publicado el 2024-11-12
Navegar:847

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

strtr vs str_replace: cuándo usar diferentes funciones de reemplazo

En PHP, tanto las funciones strtr como str_replace pueden realizar reemplazos de cadenas. Sin embargo, elegir la función correcta depende de los requisitos y casos de uso específicos.

Contraste en el orden de reemplazo

Si bien el resultado resultante puede parecer idéntico en algunos casos, existe una diferencia sutil entre las dos funciones:

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

strtr reemplaza las subcadenas de derecha a izquierda, mientras que str_replace reemplaza de izquierda a derecha. Esta diferencia se hace evidente al reemplazar subcadenas superpuestas:

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"

Reemplazar claves de matriz versus múltiples subcadenas

Otra distinción radica en cómo se manejan las matrices de reemplazo:

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

En este caso, ambas funciones reemplazan los caracteres con sus correspondientes valores de matriz. Sin embargo, strtr requiere una matriz asociativa con pares clave-valor, mientras que str_replace puede operar en matrices simples de subcadenas y reemplazos.

Prioridad de reemplazo

strtr prioriza los reemplazos según la longitud de la subcadena que se reemplaza, en orden descendente. Por el contrario, str_replace procesa los reemplazos en el orden definido en la matriz de reemplazo. Esto puede conducir a resultados diferentes, como lo demuestra el siguiente ejemplo:

$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"

En conclusión, tanto strtr como str_replace ofrecen diferentes enfoques para el reemplazo de cadenas en PHP. Comprender sus sutiles matices en el comportamiento y la sintaxis lo guiará a la hora de elegir la función adecuada para su caso de uso específico.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3