Строки в PHP: функции, UTF-8 и практические приёмы для новичков
Если вы ищете понятное руководство по запросу строки в PHP, начните с главного: строка — это последовательность байтов, а не «магический» текстовый объект. Поэтому при работе с русским языком и эмодзи важно помнить про кодировку UTF-8 и использовать правильные функции. Ниже — практические примеры, которые помогут уверенно обрабатывать строки в PHP 8.
Создание строк: одинарные и двойные кавычки
В PHP строку можно записать в одинарных или двойных кавычках. В одинарных кавычках переменные не подставляются, а в двойных — подставляются.
<?php
$name = 'Анна';
echo 'Привет, $name'; // Привет, $name
echo "Привет, $name"; // Привет, Анна
Для простых текстов без переменных чаще выбирайте одинарные кавычки: так код чуть проще читать. Если нужна интерполяция переменных — используйте двойные.
Конкатенация строк
Для склеивания строк применяется оператор .. Это одна из базовых операций, которую нужно хорошо знать.
<?php
$firstName = 'Иван';
$lastName = 'Петров';
$fullName = $firstName . ' ' . $lastName;
echo $fullName; // Иван Петров
Если строка становится слишком длинной, лучше разбить её на несколько частей или использовать шаблон. Не превращайте HTML-разметку в огромную строку из десятков конкатенаций.
Длина строки: strlen или mb_strlen?
Одна из самых частых ошибок новичков — использовать strlen() для кириллицы. Эта функция считает байты, а не символы. Для UTF-8 используйте mb_strlen().
<?php
$text = 'Привет';
echo strlen($text); // 12, потому что кириллица в UTF-8 занимает больше 1 байта
echo mb_strlen($text); // 6
Если mb_strlen() недоступна, проверьте, включено ли расширение mbstring. В современных PHP-проектах оно практически обязательно.
Обрезка пробелов: trim, ltrim и rtrim
Перед обработкой пользовательского ввода почти всегда полезно убрать лишние пробелы по краям строки.
<?php
$email = ' user@example.com ';
$email = trim($email);
echo $email; // user@example.com
trim()удаляет символы с обеих сторон;ltrim()— только слева;rtrim()— только справа.
Важно: trim() не делает строку безопасной для вывода в HTML и не проверяет корректность email. Это просто очистка краёв строки.
Проверка подстроки: str_contains, str_starts_with, str_ends_with
В PHP 8 появились удобные функции для проверки строк. Они делают код понятнее, чем старые проверки через strpos().
<?php
$url = 'https://example.com/catalog';
if (str_starts_with($url, 'https://')) {
echo 'Безопасный протокол';
}
if (str_contains($url, 'catalog')) {
echo 'Это страница каталога';
}
if (str_ends_with($url, '/catalog')) {
echo 'URL заканчивается на /catalog';
}
Эти функции чувствительны к регистру. Если нужно сравнение без учёта регистра, предварительно приведите строки к одному регистру.
Регистр строк и UTF-8
Для английского текста подойдут strtolower() и strtoupper(), но для русского языка лучше использовать функции mb_strtolower() и mb_strtoupper().
<?php
$title = 'PHP ДЛЯ НАЧИНАЮЩИХ';
echo mb_strtolower($title); // php для начинающих
Если вы делаете поиск по названию товара или статьи, нормализуйте обе строки одинаково: например, обрежьте пробелы и приведите к нижнему регистру.
<?php
$query = mb_strtolower(trim(' Ноутбук '));
$product = mb_strtolower('Игровой ноутбук');
if (str_contains($product, $query)) {
echo 'Товар найден';
}
Разбиение и сборка строк: explode и implode
explode() разбивает строку на массив, а implode() собирает массив обратно в строку. Это удобно для тегов, CSV-подобных значений, списков и простых настроек.
<?php
$tagsString = 'php, mysql, backend';
$tags = explode(',', $tagsString);
$cleanTags = [];
foreach ($tags as $tag) {
$cleanTags[] = trim($tag);
}
echo implode(' | ', $cleanTags); // php | mysql | backend
Совет: после explode() часто нужно пройтись по элементам и применить trim(), иначе в массиве останутся лишние пробелы.
Замена текста: str_replace
Для простой замены используйте str_replace(). Она быстрее и понятнее, когда не нужны сложные шаблоны.
<?php
$phone = '+7 (999) 123-45-67';
$normalized = str_replace([' ', '(', ')', '-'], '', $phone);
echo $normalized; // +79991234567
Так можно подготовить телефон к хранению или сравнению. Но для серьёзной валидации номера лучше использовать специализированные правила или библиотеку.
Безопасный вывод строк в HTML
Строки, полученные от пользователя, нельзя просто выводить на страницу. Это может привести к XSS-уязвимости. Для HTML-вывода используйте htmlspecialchars().
<?php
$comment = '<script>alert("XSS")</script>';
echo htmlspecialchars($comment, ENT_QUOTES, 'UTF-8');
Правило простое: данные очищайте по смыслу, а экранируйте там, где выводите. Для HTML — htmlspecialchars(), для SQL — подготовленные запросы, для URL — функции кодирования URL.
Практический пример: подготовка заголовка статьи
Соберём небольшую функцию, которая принимает заголовок, убирает лишние пробелы, ограничивает длину и безопасно выводит результат.
<?php
function prepareTitle(string $title, int $maxLength = 60): string
{
$title = trim($title);
while (str_contains($title, ' ')) {
$title = str_replace(' ', ' ', $title);
}
if (mb_strlen($title) > $maxLength) {
$title = mb_substr($title, 0, $maxLength - 1) . '…';
}
return htmlspecialchars($title, ENT_QUOTES, 'UTF-8');
}
echo prepareTitle(' Строки в PHP: полезные функции для новичков ');
Здесь важно использовать mb_substr(), а не substr(), чтобы не обрезать русские символы некорректно.
Частые ошибки при работе со строками в PHP
- Использовать
strlen()иsubstr()для UTF-8-текста на русском языке. - Забывать
trim()при обработке данных из форм. - Выводить пользовательские строки без
htmlspecialchars(). - Сравнивать строки без нормализации регистра и пробелов.
- Использовать сложные регулярные выражения там, где достаточно
str_replace()илиexplode().
Что учить дальше
После базовых функций строк стоит разобраться с массивами, формами, безопасностью, базами данных и архитектурой простых PHP-приложений. Если хотите пройти этот путь последовательно и с практикой, посмотрите курс «PHP и MySQL с Нуля до Гуру 3.0» — понятный маршрут от основ PHP до работы с MySQL.
Итоги
Работа со строками в PHP — фундаментальный навык. Запомните базовый набор: trim(), mb_strlen(), mb_substr(), str_contains(), explode(), implode(), str_replace() и htmlspecialchars(). Этого уже достаточно, чтобы аккуратно обрабатывать пользовательский ввод, готовить текст к выводу и избегать типичных ошибок новичков.
-
Создано 03.08.2026 17:00:41
-
Михаил Русаков

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.