strtr

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

strtrПерекладає символи або замінює підрядки

Опис

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

Якщо передається три аргументи, ця функція повертає копію 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

Прогляньте також

  • str_replace() - Replace all occurrences of the search string with the replacement string
  • preg_replace() - Perform a regular expression search and replace