(PHP 4, PHP 5, PHP 7, PHP 8)
strtr — Заменяет символы или подстроки
Альтернативная сигнатура (не поддерживается с именованными аргументами):
При передаче трёх аргументов функция возвращает копию
строки 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
// В этой форме функция strtr() выполняет побайтовую замену символов.
// Поэтому здесь подразумевается однобайтовая кодировка:
$addr = strtr($addr, "äåö", "aao");
?>
Следующий пример показывает поведение функции 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