(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