strtr
(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
.
Однако, стоит учесть тот факт, что эта функция максимально
эффективна в том случае, если все ключи имеют одинаковый размер.
Список параметров
-
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
Смотрите также
- str_replace() - Заменяет все вхождения строки поиска на строку замены
- preg_replace() - Выполняет поиск и замену по регулярному выражению