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