«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > strtr против str_replace: когда мне следует использовать каждую функцию замены строки PHP?

strtr против str_replace: когда мне следует использовать каждую функцию замены строки PHP?

Опубликовано 12 ноября 2024 г.
Просматривать:639

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

strtr против str_replace: когда использовать разные функции замены

В PHP функции strtr и str_replace могут выполнять замену строк. Однако выбор правильной функции зависит от конкретных требований и вариантов использования.

Контраст в порядке замены

Хотя в некоторых случаях конечный результат может выглядеть идентичным, существует тонкая разница между двумя функциями:

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

strtr заменяет подстроки справа налево, а str_replace заменяет слева направо. Эта разница становится очевидной при замене перекрывающихся подстрок:

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"

Замена ключей массива и нескольких подстрок

Другое различие заключается в том, как обрабатываются массивы замены:

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

В этом случае обе функции заменяют символы соответствующими значениями массива. Однако для strtr требуется ассоциативный массив с парами ключ-значение, а str_replace может работать с простыми массивами подстрок и замен.

Приоритет замены

strtr определяет приоритет замен на основе длина заменяемой подстроки в порядке убывания. Напротив, str_replace обрабатывает замены в порядке, определенном в массиве замен. Это может привести к различным результатам, как показано в следующем примере:

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

В заключение, и strtr, и str_replace предлагают разные подходы к замене строк в PHP. Понимание их тонких нюансов в поведении и синтаксисе поможет вам выбрать подходящую функцию для вашего конкретного случая использования.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3