(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