strtr

(PHP 4, PHP 5, PHP 7, PHP 8)

strtrЗаменяет символы или подстроки

Описание

strtr(string $string, string $from, string $to): string

Альтернативная сигнатура (не поддерживается с именованными аргументами):

strtr(string $string, array $replace_pairs): string

При передаче трёх аргументов функция возвращает копию строки string, в которой заменила вхождения каждого однобайтового символа строки from на символ строки to с тем же индексом: каждое вхождение символа $from[$n] заменяется символом $to[$n], где $n — допустимое смещение строки в обоих аргументах.

При несовпадении длины строк from и to «лишние» символы в более длинной строке игнорируются. Функция вернёт строку той же длины, что и у аргумента string.

При передаче двух аргументов во втором передают значение с типом array в формате array('from' => 'to', ...). Функция вернёт строку, в которой заменит вхождения ключей массива значениями. Самые длинные ключи обрабатываются первыми. После замены новое значение подстроки больше не участвует в поиске.

Функция принимает ключи и значения произвольной длины, при условии что массив не содержит пустых ключей; при этом длина возвращаемого значения после замены иногда не совпадает с длиной исходной строки string, но функция работает эффективнее с ключами одинаковой длины.

Список параметров

string

Строка (string), в которой требуется заменить символы или подстроки.

from

Строка (string), которую заменит значение to.

to

Строка (string), которая заменяет значение from.

replace_pairs

Параметр replace_pairs указывают вместо параметров to и from. В аргументе передают массив (array) в форме array('from' => 'to', ...).

Функция игнорирует элементы массива replace_pairs с ключами в виде пустой строки (string) (""), а с PHP 8.0.0 выдаёт ошибку уровня E_WARNING.

Возвращаемые значения

Функция возвращает преобразованную строку (string).

Примеры

Пример #1 Пример замены символов функцией strtr()

<?php

$addr
= "The river å";

// В этой форме функция strtr() выполняет побайтовую замену символов.
// Поэтому здесь подразумевается однобайтовая кодировка:
$addr = strtr($addr, "äåö", "aao");
echo
$addr, PHP_EOL;

?>

Следующий пример показывает поведение функции strtr() при вызове только с двумя аргументами. Обратите внимание на приоритет замен — символ "h" не участвует в поиске, поскольку массив содержит более длинные совпадения, — и как после замены новый текст больше не участвует в поиске.

Пример #2 Пример замены символов или подстрок функцией strtr() при вызове с двумя аргументами

<?php

$trans
= array("h" => "-", "hello" => "hi", "hi" => "hello");
echo
strtr("hi all, I said hello", $trans);

?>

Результат выполнения приведённого примера:

hello all, I said hi

Эти два режима поведения значительно различаются. При вызове с тремя аргументами функция strtr() заменяет байты, а при вызове с двумя заменяются и более длинные подстроки.

Пример #3 Сравнение поведения функции strtr()

<?php

echo strtr("baab", "ab", "01"),"\n";

$trans = array("ab" => "01");
echo
strtr("baab", $trans);

?>

Результат выполнения приведённого примера:

1001
ba01

Смотрите также

  • str_replace() - Заменяет вхождения строки поиска строкой замены
  • preg_replace() - Выполняет поиск и замену по регулярному выражению