strtr

(PHP 4, PHP 5, PHP 7, PHP 8)

strtrПреобразует заданные символы или заменяет подстроки

Описание

strtr(string $string, string $from, string $to): string

Альтернативная сигнатура (не поддерживается с именованными аргументами):

strtr(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

Смотрите также

  • str_replace() - Заменяет все вхождения строки поиска на строку замены
  • preg_replace() - Выполняет поиск и замену по регулярному выражению