Home >Backend Development >PHP Tutorial >When should you use `strtr` versus `str_replace` in PHP?

When should you use `strtr` versus `str_replace` in PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-11-05 00:04:01318browse

When should you use `strtr` versus `str_replace` in PHP?

When to Use strtr vs str_replace?

The strtr and str_replace functions in PHP both perform string replacements, but there are some subtle differences between their behavior.

First Difference: Replacement Order

strtr sorts its replacement pairs by length in descending order, while str_replace processes them in the order they are defined. This can lead to different results when replacing multiple substrings within a string. Consider the following example:

<code class="php">$text = 'test string';

echo strtr($text, 'st', 'XY') . "\n";
echo str_replace(['s', 't', 'st'], ['X', 'Y', 'Z'], $text) . "\n";</code>

This will output:

YeXY XYring
YeXY XYring

In the first case, strtr replaces the longer substring "st" first, while in the second case, str_replace replaces "s" first. As a result, the final output is different.

Second Difference: Replacement Priority

strtr gives higher priority to longer replacement pairs, while str_replace gives priority to the first occurrence of a substring. This can also lead to different results when replacing multiple substrings. Consider the following example:

<code class="php">$text = 'ZBB2';
echo str_replace(['1', '2', '3', 'B'], ['A', 'B', 'C', 'D'], $text) . "\n";
echo strtr($text, ['1' => 'A', '2' => 'B', '3' => 'C', 'B' => 'D']) . "\n";</code>

This will output:

ZDDD
ZDDB

In the first case, str_replace replaces "B" with "D" first, which then leads to "BB2" being replaced with "DD2". In the second case, strtr replaces "B" with "D" first, which then leads to "ZBB2" being replaced with "ZDDB".

When to Use Which Function

In general, strtr is better suited for simple string replacements where the order of the replacements is not important. str_replace, on the other hand, is better suited for more complex replacements where the order of the replacements is important or where you need to control the replacement priority.

The above is the detailed content of When should you use `strtr` versus `str_replace` in PHP?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn