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