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