strtr vs str_replace: When to Use Different Replacement Functions
In PHP, both strtr and str_replace functions can perform string replacements. However, choosing the right function depends on specific requirements and use cases.
Contrast in Replacement Order
While the resulting output may appear identical in some cases, there is a subtle difference between the two functions:
echo strtr('test string', 'st', 'XY'); // "YeXY XYring" echo str_replace(array('s', 't'), array('X', 'Y'), 'test string'); // "YeXY XYring"
strtr replaces substrings from right to left, while str_replace replaces from left to right. This difference becomes evident when replacing overlapping substrings:
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"
Replacing Array Keys vs. Multiple Substrings
Another distinction lies in how replacement arrays are handled:
$arr = array("1" => "A", "2" => "B", "3" => "C"); echo strtr('123', $arr); // "ABC" echo str_replace(array_keys($arr), array_values($arr), '123'); // "ABC"
In this case, both functions replace characters with their corresponding array values. However, strtr requires an associative array with key-value pairs, while str_replace can operate on simple arrays of substrings and replacements.
Replacement Priority
strtr prioritizes replacements based on the length of the substring being replaced, descending order. In contrast, str_replace processes replacements in the order defined in the replacement array. This can lead to different results, as demonstrated by the following example:
$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"
In conclusion, both strtr and str_replace offer different approaches to string replacement in PHP. Understanding their subtle nuances in behavior and syntax will guide you in choosing the appropriate function for your specific use case.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3