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


(PHP 4, PHP 5)

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

Описание

string strtr ( string $str , string $from , string $to )
string strtr ( string $str , array $replace_pairs )

Если указаны три аргумента, эта функция возвращает копию 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() - Выполняет поиск и замену по регулярному выражению