(PHP 4, PHP 5, PHP 7, PHP 8)
strtr — Перекладає символи або замінює підрядки
Якщо передається три аргументи, ця функція повертає копію
str
, де всі входження кожного (однобайтного)
символа у from
були перекладені на відповідний
символ у to
, тобто, кожне входження
$from[$n]
було замінено на $to[$n]
,
де $n
є коректне зміщення в обох аргументах.
Якщо from
та to
мають
різну довжину, додаткові символи, у довшому із них, будуть ігноруватись.
Довжина значення, що повертається, буде такою ж як і
довжина параметра str
.
Якщо передається два аргументи, другий аргумент повинен бути масивом
(array) в форматі array('from' => 'to', ...)
.
Функція повертає рядок (string), де всі ключі
масива були замінені їх відповідними значеннями. Спочатку замінюються
найдовші ключі. Як тільки певний підрядок було замінено, його нове значення
виключається з пошуку для наступних замін.
В даному випадку, ключі та їх значення можуть мати будь-яку довжину,
за умови, що немає порожніх ключів; окрім цього, довжина поверненого значення
може відрізнятись від довжини, що має str
.
Хоча, ця функція буде більш ефективною, коли всі ключі мають однаковий розмір.
str
Рядок (string), який буде перекладатись.
from
Рядок, кожен символ якого шукається в параметрі str
.
to
Рядок, кожен символ якого використовується для заміни відповідного йому по порядку символа в параметрі from
. Якщо певний символ не має свого відповідника - він ігнорується. Відсутність відповідника може бути за умови різних довжин рядків в параметрах to
та from
.
replace_pairs
Параметр replace_pairs
(пара для заміни) може
використовуватись замість to
та
from
. В такому випадку, масив повинен бути
в форматі 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