(PHP 4, PHP 5, PHP 7)
strtr — Преобразует заданные символы или заменяет подстроки
$str
, string $from
, string $to
) : string$str
, array $replace_pairs
) : string
Если указаны три аргумента, эта функция возвращает копию
str
, в которой все вхождения каждого
символа (однобайтного) из from
были заменены
на соответствующий символ в параметре to
,
то есть каждое вхождение из $from[$n] заменяется
на $to[$n], где $n - это
корректное смещение строки в обоих аргументах.
Если длины строк from
и
to
отличаются, "лишние" символы в более
длинной строке не используются. Длина возвращаемого значения
будет такой же, как и длина str
.
strtr() может вызываться с двумя аргументами.
В этом случае from
должен быть массивом
(array), в форме
array('from' => 'to', ...). Функция возвратит
строку, в которой все ключи массива будут заменены их элементами.
strtr() в первую очередь заменяет более
длинные ключи, причем одна и та же строка поиска используется
только один раз.
В этом случае, ключи и значения могут иметь любую длину,
за исключением того, что ключи не должны быть пустыми. Кроме того,
длина возвращаемого значения может отличаться от
str
.
Однако, стоит учесть тот факт, что эта функция максимально
эффективна в том случае, если все ключи имеют одинаковый размер.
Возвращает строку (string) с произведенными в ней заменами.
Если replace_pairs
содержит ключ,
являющийся пустой строкой (""), то будет
возвращено значение FALSE
. Если str
не является скаляром, то он не преобразуется в строку. Вместо
этого выдается предупреждение и возвращается NULL
.
Пример #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