strtr
PHP Manual
PHP Manual»Функции для работы со строками»strtr

strtr

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

strtr — Заменяет символы или подстроки

Описание

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

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

function strtr(string $string, array $replace_pairs): string

При передаче трёх аргументов функция возвращает копию строки string, в которой заменила вхождения каждого однобайтового символа строки from на символ строки to с тем же индексом: каждое вхождение символа $from[$n] заменяется символом $to[$n], где $n — допустимое смещение строки в обоих аргументах.

При несовпадении длины строк from и to «лишние» символы в более длинной строке игнорируются, поэтому длина возвращаемой строки не изменяется относительно исходной строки string.

При передаче двух аргументов во втором передают значение с типом array в формате array('from' => 'to', ...). Функция вернёт строку, в которой заменит вхождения ключей массива значениями. Самые длинные ключи обрабатываются первыми. После замены новое значение подстроки больше не участвует в поиске.

Во втором аргументе альтернативной сигнатуры поддерживаются ключи и значения произвольной длины, кроме элемента с пустым ключом; при замене вхождения другим количеством символов длина возвращаемого значения не совпадёт с длиной исходной строки 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

$original = "He1Lo, w0rld!";

// При вызове с тремя аргументами функция strtr() заменяет символы побайтово.
$result = strtr($original, "1L0", "llo");
echo $result;

Результат выполнения приведённого примера:

Hello, world!

Следующий пример показывает поведение функции strtr() при вызове только с двумя аргументами. Обратите внимание на приоритет замен — символ "h" не участвует в поиске, поскольку массив содержит более длинные совпадения, — и как после замены новый текст больше не участвует в поиске.

Пример #2 Пример замены подстрок при вызове функции strtr() с двумя аргументами

<?php

$replace_pairs = ["h" => "-", "hello" => "hi", "hi" => "hello"];
echo strtr("hi all, I said hello", $replace_pairs);

Результат выполнения приведённого примера:

hello all, I said hi

Функция strtr() работает в двух режимах: при вызове с тремя аргументами выполняется побайтовая замена, а при вызове с двумя заменяются и более длинные подстроки.

Пример #3 Сравнение поведения функции strtr()

<?php

// Однобайтовые символы
$singlebyte_string = "baab";
echo strtr($singlebyte_string, "ab", "01"), "\n"; // Побайтовая замена

$replace_pairs = ["ab" => "01"];
echo strtr($singlebyte_string, $replace_pairs), "\n"; // Замена подстрок

// Многобайтовые символы
$multibyte_string = "Ä"; // В кодировке UTF-8 символ кодируется двумя байтами: "\xC3\x84"

$result = strtr($multibyte_string, 'Ä', 'A');
echo bin2hex($result), "\n"; // "4184", где "41" — байт символа "A", которым заменился байт "c3",
                             // а "84" — байт, которому не нашлось замены в третьем аргументе;
                             // последовательность байтов теперь невозможно интерпретировать
                             // как символ в кодировке UTF-8
$replace_pairs = ['Ä' => 'A'];
echo strtr($multibyte_string, $replace_pairs); // Правильный перевод многобайтовой строки

Результат выполнения приведённого примера:

1001
ba01
4184
A

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

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

To Top