(PHP 4, PHP 5, PHP 7)
strtr — Преобразует заданные символы или заменяет подстроки
$str
, string $from
, string $to
)$str
, array $replace_pairs
)
Если указаны три аргумента, эта функция возвращает копию
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