Замена текста с помощью preg_replace
Заменяйте совпадения строками замены и обратными ссылками
«Замена текста с помощью preg_replace» — бесплатный урок PHP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Сигнатура preg_replace()
preg_replace($pattern, $replacement, $subject) возвращает subject со всеми заменёнными совпадениями. Передайте массив subject, чтобы обработать несколько строк одновременно.
Простая замена
Замените все цифры в строке звёздочкой.
<?php
$result = preg_replace('/\d/', '*', 'Order #12345');
echo $result; // "Order #*****"Обратные ссылки в замене
Используйте $1, $2 и далее (или \1, \2), чтобы вставить захваченные группы в строку замены.
<?php
$result = preg_replace('/^(\w+)\s(\w+)$/', '$2, $1', 'John Smith');
echo $result; // "Smith, John"Именованные обратные ссылки
На именованные группы захвата можно ссылаться как на ${name} в строке замены.
<?php
$result = preg_replace(
'/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
'${day}/${month}/${year}',
'2025-06-15'
);
echo $result; // "15/06/2025"Замена нескольких шаблонов
Передайте массивы шаблонов и замен, чтобы обработать несколько правил одновременно.
<?php
$result = preg_replace(
['/foo/', '/bar/'],
['baz', 'qux'],
'foo and bar'
);
echo $result; // "baz and qux"Параметр ограничения
Четвёртый параметр ограничивает количество выполняемых замен. Передайте -1 для неограниченного количества (значение по умолчанию).
<?php
$result = preg_replace('/a/', 'X', 'banana', 2);
echo $result; // "bXnXna"Параметр количества
Передайте пятую переменную, чтобы получить количество выполненных замен.
<?php
$count = 0;
$result = preg_replace('/e/', '3', 'hello everyone', -1, $count);
echo "$count replacements"; // "3 replacements"preg_replace_callback()
Если логика замены сложная, используйте preg_replace_callback(), чтобы обработать каждое совпадение с помощью замыкания.
<?php
$result = preg_replace_callback(
'/\d+/',
fn($m) => $m[0] * 2,
'Item: 5, Qty: 3'
);
echo $result; // "Item: 10, Qty: 6"Пример удаления HTML-тегов
Удалите все HTML-теги с помощью простого регулярного выражения (в рабочем окружении используйте strip_tags()).
<?php
$clean = preg_replace('/<[^>]+>/', '', '<b>Hello</b> World');
echo $clean; // "Hello World"Преобразование строки в слаг
Преобразуйте заголовок в слаг, безопасный для URL.
<?php
function slugify(string $s): string {
$s = strtolower($s);
$s = preg_replace('/[^a-z0-9]+/', '-', $s);
return trim($s, '-');
}
echo slugify('Hello World!'); // "hello-world"Примечание о производительности
Делайте шаблоны простыми и избегайте катастрофического возврата. Для сложных преобразований используйте preg_replace_callback, а не объединяйте несколько вызовов preg_replace.
Отличие от str_replace
str_replace работает быстрее при замене обычного текста. Используйте preg_replace только тогда, когда вам нужны возможности шаблона регулярного выражения.
Итоги
preg_replace заменяет все совпадения шаблона. Используйте обратные ссылки ($1), чтобы повторно использовать захваченные группы. Применяйте preg_replace_callback, когда логика замены является динамической.
Быстрая проверка
Как сослаться на первую группу захвата в строке замены preg_replace?
Часто задаваемые вопросы
Урок «Замена текста с помощью preg_replace» бесплатный?
Да — полный текст урока «Замена текста с помощью preg_replace» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Замена текста с помощью preg_replace»?
Заменяйте совпадения строками замены и обратными ссылками Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Замена текста с помощью preg_replace»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы синтаксиса регулярных выражений
- Поиск совпадений с preg_match
- Замена текста с помощью preg_replace
- Разделение строк и практические шаблоны