(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