
Работа со строками в PHP часто требует точной замены отдельных символов или последовательностей. Например, при обработке пользовательского ввода необходимо удалить запрещенные символы или заменить кавычки и скобки на безопасные аналоги для базы данных.
PHP предоставляет несколько инструментов для таких операций. Функция str_replace подходит для прямой замены символов и подстрок, а str_ireplace позволяет игнорировать регистр. Для сложных шаблонов применяются регулярные выражения с помощью preg_replace, что особенно полезно при очистке текстов от HTML-тегов или числовых последовательностей.
Выбор подхода зависит от задачи: если требуется заменить один или несколько конкретных символов, str_replace работает быстрее и проще. Если же требуется обработка динамических или непредсказуемых шаблонов, регулярные выражения обеспечивают гибкость, но требуют внимательного синтаксиса.
В статье приведены практические примеры замены символов, удаление лишних символов и обработка специальных символов, включая рекомендации по выбору подходящих функций в разных ситуациях. Каждая демонстрация сопровождается конкретным кодом, который можно сразу использовать в проектах на PHP.
Замена символов в строках на PHP: примеры и способы

Для замены символов в строках PHP предоставляет несколько функций с разным уровнем контроля и производительности. Самая часто используемая – str_replace, которая заменяет все вхождения символа или подстроки на заданное значение.
Примеры применения str_replace:
- Заменить все пробелы на подчеркивания: str_replace(‘ ‘, ‘_’, $string)
- Удалить все цифры из строки: str_replace([‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’], », $string)
- Поменять последовательность символов: str_replace(‘abc’, ‘xyz’, $string)
Если необходимо игнорировать регистр символов, используют str_ireplace. Она заменяет все вхождения без учета больших и маленьких букв:
- Заменить ‘php’ на ‘PHP’ независимо от регистра: str_ireplace(‘php’, ‘PHP’, $string)
Для более сложных шаблонов применяются регулярные выражения через preg_replace. С их помощью можно:
- Удалить все символы, кроме букв и цифр: preg_replace(‘/[^a-zA-Z0-9]/’, », $string)
- Заменить все повторяющиеся пробелы на один: preg_replace(‘/\s+/’, ‘ ‘, $string)
- Извлечь и заменить шаблоны, например даты в формате DD/MM/YYYY: preg_replace(‘/(\d{2})\/(\d{2})\/(\d{4})/’, ‘$3-$2-$1’, $string)
Для динамических замен, когда список символов меняется во время выполнения, лучше использовать массивы в str_replace или строить регулярные выражения на лету. Это позволяет быстро адаптировать обработку текста под конкретные условия без изменения кода функций.
Особое внимание стоит уделить обработке HTML-символов и спецсимволов. Функции htmlspecialchars и html_entity_decode помогают корректно заменять символы, которые иначе могут нарушить структуру документа или базы данных.
Использование str_replace для замены одного символа

Функция str_replace позволяет заменить конкретный символ на другой в строке. Она принимает три обязательных параметра: искомое значение, новое значение и исходную строку.
Примеры практического применения:
- Заменить все точки на запятые в числе: str_replace(‘.’, ‘,’, ‘123.45’) вернет ‘123,45’
- Поменять дефисы на пробелы в тексте: str_replace(‘-‘, ‘ ‘, ‘2025-10-24’) вернет ‘2025 10 24’
- Удалить символ подчеркивания: str_replace(‘_’, », ‘user_name’) вернет ‘username’
Рекомендации по использованию:
- Для замены одного символа str_replace работает быстрее, чем регулярные выражения.
- Функция учитывает регистр, поэтому ‘a’ и ‘A’ воспринимаются как разные символы.
- Если символа нет в строке, функция возвращает исходное значение без изменений.
Для работы с динамическими символами можно использовать переменные вместо букв в параметрах функции, что позволяет изменять замену во время выполнения скрипта.
Замена нескольких символов одновременно через str_replace
Функция str_replace позволяет заменять несколько символов за один вызов, если передать массивы в качестве параметров. Первый массив содержит символы для поиска, второй – соответствующие замены.
Примеры:
| Исходная строка | Символы для замены | Новые символы | Результат |
|---|---|---|---|
| Привет, мир! | [‘,’, ‘!’] | [‘;’, ‘.’] | Привет; мир. |
| 2025-10-24 | [‘-‘, ‘0’] | [‘/’, ‘O’] | 2O25/1O/24 |
| user_name@example.com | [‘_’, ‘@’] | [‘-‘, ‘#’] | user-name#example.com |
Рекомендации по использованию:
- Массивы должны совпадать по порядку: первый элемент первого массива заменяется на первый элемент второго массива.
- Если массивы разной длины, лишние элементы массива поиска игнорируются, а оставшиеся элементы второго массива не используются.
- Для удаления символов вместо замены можно указать пустую строку в массиве новых символов.
- Использование массивов уменьшает количество вызовов функции и повышает скорость обработки по сравнению с последовательными вызовами str_replace.
Применение str_ireplace для замены без учета регистра

Функция str_ireplace работает аналогично str_replace, но игнорирует регистр символов при поиске. Это позволяет заменять строки независимо от того, написаны они большими или маленькими буквами.
Примеры использования:
- Заменить все варианты слова «php» на «PHP»: str_ireplace(‘php’, ‘PHP’, ‘Php, pHP, php’) вернет ‘PHP, PHP, PHP’
- Заменить «Test» в тексте без учета регистра: str_ireplace(‘test’, ‘Demo’, ‘This is a TEST string’) вернет ‘This is a Demo string’
- Удалить символы независимо от регистра: str_ireplace([‘a’, ‘B’], », ‘aAbB’) вернет »
Рекомендации по применению:
- Используйте str_ireplace, когда важно заменить текст без учета регистра, избегая дополнительных преобразований строки в верхний или нижний регистр.
- Функция поддерживает массивы как для поиска, так и для замены, что позволяет одновременно менять несколько элементов.
- При больших объемах текста и множественных замен str_ireplace сохраняет производительность, аналогичную str_replace, без необходимости писать сложные регулярные выражения.
Регулярные выражения: preg_replace для сложных замен
Функция preg_replace позволяет заменять символы и последовательности, соответствующие шаблонам регулярных выражений. Она подходит для сложных задач, которые невозможно решить с помощью str_replace, например удаление всех цифр, пробелов или HTML-тегов.
Примеры применения:
- Удалить все цифры: preg_replace(‘/\d/’, », ‘User123’) вернет ‘User’
- Заменить повторяющиеся пробелы на один: preg_replace(‘/\s+/’, ‘ ‘, ‘Text with multiple spaces’) вернет ‘Text with multiple spaces’
- Извлечь и изменить формат даты: preg_replace(‘/(\d{2})\/(\d{2})\/(\d{4})/’, ‘$3-$2-$1′, ’24/10/2025’) вернет ‘2025-10-24’
- Удалить все HTML-теги: preg_replace(‘/<[^>]+>/’, », ‘<p>Text</p>’) вернет ‘Text’
Рекомендации по использованию:
- Регулярные выражения позволяют гибко контролировать шаблоны, включая диапазоны символов, классы и повторения.
- Используйте группы захвата для перестановки частей строки или форматирования сложных данных.
- Функция чувствительна к регистру, если не применять модификатор i для игнорирования регистра.
- Для динамических шаблонов строки можно формировать регулярные выражения на лету, что упрощает обработку переменных данных.
Удаление символов из строки через str_replace и preg_replace

Для удаления конкретных символов в PHP можно использовать str_replace и preg_replace. str_replace подходит для явных, заранее известных символов, а preg_replace – для сложных шаблонов или диапазонов символов.
Примеры удаления с помощью str_replace:
- Удалить все пробелы: str_replace(‘ ‘, », ‘Hello World’) вернет ‘HelloWorld’
- Удалить специальные символы: str_replace([‘!’, ‘?’, ‘.’], », ‘Hello! How are you?’) вернет ‘Hello How are you’
Примеры удаления с помощью preg_replace:
- Удалить все цифры: preg_replace(‘/\d/’, », ‘User123’) вернет ‘User’
- Удалить все символы кроме букв: preg_replace(‘/[^a-zA-Z]/’, », ‘Hello123!’) вернет ‘Hello’
- Удалить повторяющиеся пробелы: preg_replace(‘/\s+/’, ‘ ‘, ‘Text with spaces’) вернет ‘Text with spaces’
Рекомендации по применению:
- Для конкретных символов используйте str_replace – функция быстрее и проще в синтаксисе.
- Для сложных условий удаления, включая диапазоны символов или HTML-теги, выбирайте preg_replace.
- При динамических списках символов str_replace поддерживает массивы, что упрощает замену без написания регулярных выражений.
Замена символов в цикле для динамических строк
Иногда требуется заменить символы в строках, где набор замен определяется во время выполнения скрипта. Для таких случаев удобно использовать цикл вместе с str_replace или preg_replace.
Примеры использования цикла для динамических замен:
- Последовательная замена символов из массива:
$replacements = ['a' => '1', 'b' => '2', 'c' => '3'];
$string = 'abcabc';
foreach ($replacements as $search => $replace) {
$string = str_replace($search, $replace, $string);
}
// Результат: '123123'
$remove = ['!', '@', '#'];
$text = 'Hello!@# World';
foreach ($remove as $char) {
$text = str_replace($char, '', $text);
}
// Результат: 'Hello World'
$patterns = ['/foo/', '/bar/'];
$replacements = ['baz', 'qux'];
$string = 'foo bar foo';
for ($i = 0; $i < count($patterns); $i++) {
$string = preg_replace($patterns[$i], $replacements[$i], $string);
}
// Результат: 'baz qux baz'
Рекомендации по применению:
- Используйте циклы при динамических данных, когда заранее неизвестно, какие символы или шаблоны нужно заменить.
- Для небольшого числа замен лучше использовать массивы в str_replace без цикла, чтобы повысить производительность.
- При сложных шаблонах регулярных выражений сочетание цикла и preg_replace позволяет гибко управлять последовательностью замен и исключениями.
Обработка специальных символов и HTML-кодов при замене
При работе с текстом, содержащим HTML или специальные символы, стандартные функции str_replace и preg_replace могут изменять структуру документа или приводить к некорректному отображению. Для корректной замены используют функции htmlspecialchars, html_entity_decode и регулярные выражения.
Примеры обработки:
- Замена символов без нарушения HTML-кода: str_replace(‘<‘, ‘<em>’, htmlspecialchars($string))
- Декодирование HTML-сущностей перед заменой: $text = str_replace(‘©’, ‘(c)’, html_entity_decode($string))
- Удаление всех HTML-тегов с сохранением текста: preg_replace(‘/<[^>]+>/’, », $string)
Рекомендации:
- Перед заменой специальных символов используйте html_entity_decode, чтобы работать с исходными символами, а не с их HTML-представлением.
- Регулярные выражения позволяют удалять или изменять теги, сохраняя текстовую часть документа.
- При массовых замен лучше объединять несколько операций в цепочку, чтобы избежать потери данных и некорректного отображения символов.
Вопрос-ответ:
Как заменить несколько символов в строке одновременно с помощью str_replace?
Для замены нескольких символов в одной строке можно передать массивы в функцию str_replace. Первый массив содержит символы или подстроки, которые нужно заменить, второй массив — соответствующие новые значения. Например, str_replace([‘a’, ‘b’], [‘1’, ‘2’], ‘abcab’) вернет ’12c12′. Если массивы разной длины, лишние элементы поиска игнорируются. Такой метод удобен для статических и заранее известных наборов замен.
В чем разница между str_replace и str_ireplace?
str_replace учитывает регистр символов при поиске и замене, поэтому ‘A’ и ‘a’ воспринимаются как разные. str_ireplace игнорирует регистр, заменяя все варианты независимо от того, большие или маленькие буквы. Например, str_ireplace(‘php’, ‘PHP’, ‘Php pHP php’) вернет ‘PHP PHP PHP’. str_ireplace полезна, когда текст может содержать различные варианты регистра и нужно заменить их одинаково.
Как удалить все цифры из строки на PHP?
Для удаления цифр можно использовать preg_replace с регулярным выражением, которое находит все числовые символы. Например, preg_replace(‘/\d/’, », ‘User123Data’) вернет ‘UserData’. Альтернативно, можно использовать str_replace с массивом цифр [‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’], заменяя их на пустую строку, но для длинных строк и сложных шаблонов регулярные выражения более гибкие.
Можно ли заменять символы в динамических строках, когда набор замен неизвестен заранее?
Да, для динамических строк используют циклы с str_replace или preg_replace. Например, если набор замен хранится в массиве $replacements = [‘a’ => ‘1’, ‘b’ => ‘2’], можно пройтись по массиву циклом и заменить каждый символ в строке. Такой подход позволяет работать с данными, которые формируются во время выполнения скрипта, и контролировать последовательность замен.
Как корректно заменить символы в тексте с HTML-кодами?
При работе с HTML и спецсимволами сначала нужно декодировать сущности с помощью html_entity_decode, затем выполнить замену через str_replace или preg_replace. После замены для безопасного вывода применяют htmlspecialchars. Например, $text = str_replace(‘©’, ‘(c)’, html_entity_decode($string)) заменит символ авторского права, не нарушая тегов. Для удаления тегов используют preg_replace(‘/<[^>]+>/’, », $string), что сохраняет текстовую часть документа.
Как заменить несколько различных символов в строке на PHP и сохранить порядок замен?
Для замены нескольких символов с сохранением определенного порядка используют массивы в str_replace или цикл. В первом случае первый массив содержит символы или подстроки для поиска, второй массив — соответствующие новые значения. Например, str_replace([‘a’,’b’,’c’], [‘1′,’2′,’3’], ‘abcabc’) вернет ‘123123’. Если необходимо более точное управление порядком или динамический список замен, применяют цикл: перебирают массив замен и последовательно выполняют str_replace для каждой пары «искомое → новое». Такой подход позволяет избежать конфликта замен, когда один символ может входить в другой паттерн, и гарантирует корректный результат при сложных комбинациях.
