Home >Backend Development >PHP Tutorial >strtr vs str_replace: When should I use each PHP string replacement function?
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.
The above is the detailed content of strtr vs str_replace: When should I use each PHP string replacement function?. For more information, please follow other related articles on the PHP Chinese website!