Перейти к содержимому

strtr()

Введение

Функция strtr() в PHP заменяет подстроки внутри строки. Она особенно полезна при обработке текста, когда определенные последовательности нужно заменить эффективно. В этой статье рассматриваются её синтаксис, поведение и практическое применение.

Понимание функции strtr()

Функция strtr() поддерживает две сигнатуры:

Сигнатура с массивом

php
strtr(string $str, array $replace) : string

Здесь $str — это входная строка, а $replace — ассоциативный массив, сопоставляющий подстроки их заменам. Функция заменяет все вхождения ключей на соответствующие значения.

Сигнатура с тремя аргументами

php
strtr(string $str, string $from, string $to) : string

В этой форме $from и $to должны иметь одинаковую длину. Каждый символ в $from сопоставляется символу в той же позиции в $to.

Важное поведение: strtr() заменяет подстроки, используя алгоритм «наибольшее совпадение в первую очередь». Это означает, что перекрывающиеся шаблоны разрешаются за счет приоритета самого длинного совпадения, а замены не применяются рекурсивно к результату.

Пример использования

Ниже приведен пример использования функции strtr() в PHP:

Пример PHP strtr()

php
<?php

$string = "Hello World!";
$translation_rules = array("H" => "J", "W" => "Z");
$translated_string = strtr($string, $translation_rules);
echo $translated_string;

В приведенном выше примере мы определяем строку $string и ассоциативный массив $translation_rules. Функция strtr() заменяет указанные подстроки («H» и «W») на их сопоставленные значения («J» и «Z»). Обратите внимание, что strtr() обрабатывает многосимвольные подстроки и применяет замены за один проход без рекурсии.

Заключение

Функция strtr() обеспечивает эффективный способ замены подстрок в PHP. Она поддерживает как отображение на основе массива, так и посимвольный перевод через сигнатуру с тремя аргументами. Поскольку она работает за один проход, используя логику «наибольшее совпадение в первую очередь», она, как правило, быстрее, чем str_replace(), при множественных заменах. Понимание этого поведения помогает разработчикам выбирать правильный инструмент для задач обработки текста.

Практика

Какова цель функции strtr в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.