1

Substr replace: примеры (PHP)

Изучение функции substr_replace для манипуляций со строками
Раздел: Работа со строками
substr_replace(mixed string, mixed replacement, mixed start [, mixed length]): string|array

Функция substr_replace в PHP

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

Аргументы функции
  • $string (string) – исходная строка для обработки.
  • $replacement (string) – строка, которая вставляется на место заменяемого участка.
  • $start (int) – позиция, с которой начинается замена. Если значение отрицательное, отсчёт ведётся с конца строки.
  • $length (int | null) – длина заменяемого фрагмента. Если равен null, замена продолжается до конца строки. Отрицательное значение задаёт количество символов от конца строки.
Примеры использования substr_replace

Замена части строки с положительным смещением:

echo substr_replace('Привет мир', 'всем', 7);
Привет всем

Замена с указанием длины:

echo substr_replace('Яблоко груша', 'апельсин', 0, 6);
апельсин груша

Использование отрицательного смещения:

echo substr_replace('0123456789', 'abc', -3);
0123456abc

Замена с отрицательной длиной:

echo substr_replace('0123456789', 'abc', 2, -3);
01abc789

Передача массива в качестве аргументов:

print_r(substr_replace(['яблоко', 'груша'], 'сок', -3));
Array
(
    [0] => яблосок
    [1] => грсок
)
Похожие функции в PHP

str_replace() – заменяет все вхождения заданного значения. Подходит для массовой замены, но не для позиционной.

preg_replace() – выполняет замену по регулярному выражению. Используется для сложных шаблонов поиска.

substr() – возвращает часть строки. Может комбинироваться с конкатенацией для достижения похожего результата.

Типичные ошибки

Передача неверного типа данных приводит к неожиданным результатам:

echo substr_replace(12345, '9', 1, 1);
19345

Ошибка в расчёте длины при использовании многобайтовых кодировок:

echo substr_replace('Привет', 'ой', 2, 2);
Пойвет

Некорректное поведение при отрицательной длине, превышающей смещение:

echo substr_replace('abcdef', 'xyz', 2, -5);
abxyzcdef
Изменения в PHP 8.0

В PHP 8.0 функция substr_replace() стала строго типизированной. Передача аргументов несовместимых типов вызывает TypeError. Ранее некорректные типы преобразовывались.

Расширенные примеры

Множественная замена в массивах строк:

Пример php
$input = ['A: 10', 'B: 20', 'C: 30'];
$repl = substr_replace($input, 'Значение=', 0, 3);
print_r($repl);
Array
(
    [0] => Значение= 10
    [1] => Значение= 20
    [2] => Значение= 30
)

Постепенная маскировка данных:

Пример php
$card = '1234567812345678';
echo substr_replace($card, str_repeat('*', 8), 4, 8);
1234********5678

Динамическое обновление шаблонов:

Пример php
$template = 'Дата: ___, Время: ___';
$result = substr_replace($template, '2024-01-15', 6, 3);
$result = substr_replace($result, '12:00', 20, 3);
echo $result;
Дата: 2024-01-15, Время: 12:00

Обработка строк с учётом многобайтовых символов через mb_substr_replace:

Пример php
function mb_substr_replace($str, $repl, $start, $length = null) {
    $before = mb_substr($str, 0, $start, 'UTF-8');
    $after = $length === null ? '' : mb_substr($str, $start + $length, null, 'UTF-8');
    return $before . $repl . $after;
}
echo mb_substr_replace('Привет мир', 'друг', 7, 3);
Привет друг
Аналоги в других языках

Python: Используется срезы строк.

text = "Привет мир"
result = text[:6] + "всем" + text[7:]
print(result)
Привет всем

JavaScript: Метод substring() в комбинации с конкатенацией.

let text = "Привет мир";
let result = text.substring(0, 7) + "всем";
console.log(result);
Привет всем

MySQL: Функция INSERT() для вставки подстроки.

SELECT INSERT('Привет мир', 8, 3, 'всем');
Привет всем

PHP substr_replace function comments

En
Substr replace Replace text within a portion of a string